1、外部晶振8MHz,下载方式SWD模式,需求配置定时器1,产生每100ms一次中断
新建工程、配置晶振、选择下载方式等略
2、查阅资料,STM32F103的时钟树分配
3、配置CubeMX的时钟树
4、配置定时器-开启定时中断
5、配置定时时间
(定时周期 = (Prescaler + 1) × (Period + 1) ÷ 时钟频率
单位:秒(S))
由步骤3知,时钟频率72MHz = 72 ×
10^6(Hz)
定时100ms = 0.1(S) ,故(Prescaler + 1) × (Period + 1)
= 0.1×
72×
10^6=72×
10^5
(Prescaler + 1)
与(Period + 1)
的值均不能大于65535,这里选择 Prescaler
= 7200-1;Period
=1000-1;
6、代码生成
7、补充初始化代码
放在main函数里,死循环之前,系统配置的初始化之后
__HAL_TIM_CLEAR_FLAG(&htim1, TIM_FLAG_UPDATE);//启用前清除TIM中断标志位
__HAL_TIM_CLEAR_IT(&htim1, TIM_IT_UPDATE);//启用前清除TIM中断
HAL_TIM_Base_Start_IT(&htim1);//开启TIM计数
8、调用定时服务中断
//TIM定时返回函数
void HAL_TIM_PeriodElapsedCallback (TIM_HandleTypeDef *htim)//回调函数
{
if(htim->Instance == TIM1)//判断进入定时1通道回调函数
{
}
}