这一章讲的是STM32F103C8T6定时器配置,定时器配置主要要弄懂的是系统主频多少、你分频多少、你需要定时多长时间。
我们来做一个简单的计算。比如说系统的主频是72M,我们要想得到一个定时时间1S钟的定时器,我们可以通过修改分频系数和计数值来确定。这里我们分频系数设置为(7200-1)这里减1是必须加上的确保计数精确,这样得到分频时钟是10K。我们将计数值设置为10000(10k)这样就能配置成功一个1S钟的定时器。
一、准备工作
1、使用第一章配置好的文件,这里不多说了。大家也可以用自己配置好的工程文件。
2、准备一块stm32f103c8t6最小系统核心板。(杜邦线若干)
二、具体操作
1、在Pinout菜单栏下,定时器的选择与配置。配置如图
这里选择的是TIM1定时器,时钟源选择的是内部时钟。
2、在Clock Configuration菜单栏下,我们要设定外部主时钟,这里第一章说过了我们设定时钟为72M,根据不同芯片可设置不同主频。配置如图
3、在Configuration菜单栏下,点击Control下的TIM1弹出配置界面,配置如图
①点击Parameter Setting菜单栏
②设置分频系数
③设置计数方式为增加计数
④设置计数值为10000
⑤打开自动重载计数值
⑥点击OK
这里注意的是要打开NVIC Setting下的 TIM1的更新中断!
3、生成工程
点击Project菜单栏选择Generate code,工程生成完毕。
4、打开MDK工程,工程里面配置
1)while之前添加定时器中断打开函数
HAL_TIM_Base_Start_IT(&htim1);
/* USER CODE END 2 */
/* Infinite loop */
/* USER CODE BEGIN WHILE */
while (1)
{
/* USER CODE END WHILE */
/* USER CODE BEGIN 3 */
}
HAL_TIM_Base_Start_IT(&htim1);
2)在Tim.c添加定时器中断回调函数
unsigned int LED = 0;
void HAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef *htim)
{
if (htim->Instance == htim1.Instance)
{
LED ^= 1;
}
}
编译下载即可!
5、调试测试
仿真添加监控变量即可看到变量每隔一秒跳转一次。
这样定时器中断配置就完成了!~~~
如有什么不懂联系加QQ群:1063618791欢迎大家学习交流!
QQ:1320300083