银杏科技有限公司旗下技术文档发布平台 | |||
技术支持电话 | 0379-69926675-801 | ||
技术支持邮件 | Gingko@vip.163.com | ||
版本 | 日期 | 作者 | 修改内容 |
---|---|---|---|
V1.0 | 2020-11-20 | gingko | 初次建立 |
1.在主界面选择File–>New Project或者直接点击ACCEE TO MCU SELECTOR 2.出现芯片型号选择,搜索自己芯片的型号,双击型号,或者点击Start Project进入配置在搜索栏的下面,提供的各 种查找方式,可以选择芯片内核,型号等等,可以帮助你查找芯片。本实验选取的芯片型号为:STM32F429IGHx。 3.配置RCC,使用外部时钟源 4.调试选择Serial Wire,时基源选择SysTick 5.将PI3,PI4,PH14设置为GPIO_Output 6.引脚模式配置 7.通用定时器配置 定时器中断使能 8.时钟源设置,选择外部高速时钟源,配置为最大主频 9.工程文件的设置, 这里就是工程的各种配置 我们只用到有限几个,其他的默认即可IDE我们使用的是MDK V5.27 10.点击Code Generator,进行进一步配置
定时时间计算: Tout = ((ARR+1)* (PSC+1))/ Tclk
1.主函数
int main(void) { HAL_Init(); SystemClock_Config(); MX_GPIO_Init(); MX_TIM3_Init(); HAL_TIM_Base_Start_IT(&htim3); //在中断模式下启动定时器 while (1) { } }
2.TIM3初始化函数
void MX_TIM3_Init(void) { TIM_ClockConfigTypeDef sClockSourceConfig = {0}; TIM_MasterConfigTypeDef sMasterConfig = {0}; //每1s进去一次中断 htim3.Instance = TIM3; htim3.Init.Prescaler = 8999; //预分频系数 htim3.Init.CounterMode = TIM_COUNTERMODE_UP; htim3.Init.Period = 9999; //计数周期 htim3.Init.ClockDivision = TIM_CLOCKDIVISION_DIV1; htim3.Init.AutoReloadPreload = TIM_AUTORELOAD_PRELOAD_DISABLE; if (HAL_TIM_Base_Init(&htim3) != HAL_OK) { Error_Handler(); } sClockSourceConfig.ClockSource = TIM_CLOCKSOURCE_INTERNAL; if (HAL_TIM_ConfigClockSource(&htim3, &sClockSourceConfig) != HAL_OK) { Error_Handler(); } sMasterConfig.MasterOutputTrigger = TIM_TRGO_RESET; sMasterConfig.MasterSlaveMode = TIM_MASTERSLAVEMODE_DISABLE; if (HAL_TIMEx_MasterConfigSynchronization(&htim3, &sMasterConfig) != HAL_OK) { Error_Handler(); } }
3.中断服务函数
void HAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef *htim) { static int counter = 0; if(counter % 3 == 0) { LED_RED_ON; LED_GREEN_OFF; LED_BLUE_OFF; } else if(counter % 3 == 1) { LED_RED_OFF; LED_GREEN_ON; LED_BLUE_OFF; } else if(counter % 3 == 2) { LED_RED_OFF; LED_GREEN_OFF; LED_BLUE_ON; } counter ++; }
iCore3L 双核心板上三色LED每1s交替点亮