你的浏览器禁用了JavaScript, 请开启后刷新浏览器获得更好的体验!
设置了中断,然后写了一个callback响应中断事件,
分别是void TIM14_IRQHandler(void);和HAL_Tim_PeriodElapsedCallBack(TIM_HandleTypeDef *htim);
但是这两个callback一个都不执行,所以计时器不管用
请问是哪里不对?
还是说得注册一下这个方法?
没有找到相关结果
admin
赞同来自:
初始化完成, 要记得开启, main里面开启了吗
HAL_TIM_Base_Start_IT(&htim4)
参考 这个帖子 http://www.stm32cube.com/article/185
lescper
多谢
已经开启了
HAL_TIM_Base_Start(&htim);
HAL_TIM_Base_Start_IT(&htim);
这个都执行了,还是没有任何反应,不会响应中断程序
赞同来自: 莫笑
根据你图片, 大致看了下,
1, 我猜测你定时器4的晶振频率为8M的话, 那么你prescaler = 7,那么是8分频, 即定时频率为8000000/8=1000000 (即1Mhz);
那么每次定时器自加1的时间为: 1/1M=0.000001s 即1微秒
2, 如果你要检测你的定时器到底有没成功, 那么就在定时器的callback里加个led指示灯的开关控制, 另外你上面图中没有开启定时器的自动重载, 那么现在开启自动重载, 顺便把定时器的period=500000 , 让定时器500毫秒中断一次.
(备注: 上面500000可能不行, 超出最大定时范围i, 请自行修改分频数,使上面达到500毫秒定时要求)
3, 以上都做完了, 在main中开启定时器, 你应该可以看到led闪烁了.
4, 如果你没看到, 那么请去定时器板块自定学习别人怎么设置的, 或者烧录官方的定时器示例观察区别,谢谢
写了这么多, 很累,
多说两句: 任何硬件调试请先实现最基本功能之后, 一步步再去修改成你想要的样子, 就像你上面的代码中,定时时间只有1微妙而且不是自动重载连续执行, 这样能观察到什么? 先实现定时1s便于仿真和观察, 成功后做任何其他改变都会更轻松.
历经沧桑的老人
请问,您那两个函数都是在哪里被引用了?没有引用的地方自然不会被运行,这是再正常不过的了!!!
要回复问题请先登录或注册
4 个回复
admin
赞同来自:
初始化完成, 要记得开启, main里面开启了吗
HAL_TIM_Base_Start_IT(&htim4)
参考 这个帖子 http://www.stm32cube.com/article/185
lescper
赞同来自:
多谢
已经开启了
HAL_TIM_Base_Start(&htim);
HAL_TIM_Base_Start_IT(&htim);
这个都执行了,还是没有任何反应,不会响应中断程序
admin
赞同来自: 莫笑
根据你图片, 大致看了下,
1, 我猜测你定时器4的晶振频率为8M的话, 那么你prescaler = 7,那么是8分频, 即定时频率为8000000/8=1000000 (即1Mhz);
那么每次定时器自加1的时间为: 1/1M=0.000001s 即1微秒
2, 如果你要检测你的定时器到底有没成功, 那么就在定时器的callback里加个led指示灯的开关控制, 另外你上面图中没有开启定时器的自动重载, 那么现在开启自动重载, 顺便把定时器的period=500000 , 让定时器500毫秒中断一次.
(备注: 上面500000可能不行, 超出最大定时范围i, 请自行修改分频数,使上面达到500毫秒定时要求)
3, 以上都做完了, 在main中开启定时器, 你应该可以看到led闪烁了.
4, 如果你没看到, 那么请去定时器板块自定学习别人怎么设置的, 或者烧录官方的定时器示例观察区别,谢谢
写了这么多, 很累,
多说两句: 任何硬件调试请先实现最基本功能之后, 一步步再去修改成你想要的样子, 就像你上面的代码中,定时时间只有1微妙而且不是自动重载连续执行, 这样能观察到什么? 先实现定时1s便于仿真和观察, 成功后做任何其他改变都会更轻松.
历经沧桑的老人
赞同来自:
请问,您那两个函数都是在哪里被引用了?没有引用的地方自然不会被运行,这是再正常不过的了!!!