STM32CUBEMX_STM32F0_TIM17
来源:互联网 发布:单页网站怎么优化 编辑:程序博客网 时间:2024/06/02 04:12
用CUBEMX设置定时器,如果只用到溢出中断,设置非常简单,如下
下面接着设置定时器中断溢出周期:图中红框内即设置的两个重要参数
计算溢出周期的方法 T=((PSC+1)*(ARR+1))/系统主频(单位为秒)
比如此处溢出周期T=600*800/48000000=0.01s=10ms
生产代码后的设置为在stm32f0xx_hal_tim.c中找到函数void HAL_TIM_IRQHandler(TIM_HandleTypeDef *htim),此函数为定时器中断服务函数,包括
N多种定时器的中断(溢出中断、比较中断、输入捕获中断......),在此函数内找到处理溢出中断的代码行
/* TIM Update event */ if(__HAL_TIM_GET_FLAG(htim, TIM_FLAG_UPDATE) != RESET) { if(__HAL_TIM_GET_IT_SOURCE(htim, TIM_IT_UPDATE) !=RESET) { __HAL_TIM_CLEAR_IT(htim, TIM_IT_UPDATE); HAL_TIM_PeriodElapsedCallback(htim); } }在 HAL_TIM_PeriodElapsedCallback(htim)是回调函数 为__weak void HAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef *htim)的原形,此处我们需要处理的是重新定义一个函数为 void HAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef *htim),在内编写其中断服务函数
/* USER CODE BEGIN 1 */void HAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef *htim){ if(htim == (&htim16)) { } if(htim == (&htim17)) { tim17cnt ++; }}/* USER CODE END 1 */如果有N个定时器溢出中断,则需要判断是哪个定时器的溢出中断,然后做相应的处理,别忘了定义变量tim17cnt
最后需要在初始化阶段进行启动定时器的溢出中断
HAL_TIM_Base_Start_IT(&htim17);
注意是带IT的,不是HAL_TIM_Base_Start(&htim17);
到这里定时器17就开始工作了,每10ms 会进入中断对tim17cnt进行+1。
阅读全文
0 0
- STM32CUBEMX_STM32F0_TIM17
- C#代码生成XML文件
- Spring Boot 之json数据解析
- C++ Socket
- SQL总结
- SpringMvc MappingJacksonHttpMessageConverter 异常
- STM32CUBEMX_STM32F0_TIM17
- [BZOJ1516][VijosP1061]迎春舞会之三人组舞
- 深入理解 Android 之 View 的绘制流程(二)_Measure
- ORA-12516 "TNS监听程序找不到符合协议堆栈要求的可用处理程序" 解决方案
- 分布式事务
- 分布式事务处理方案:将多虚拟机事务变为单一虚拟机XA事务
- js的数组(精英)
- Ubuntu 查看和杀死进程
- 取消html 移动端 onclick点击事件高亮效果