1
完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
本帖最后由 henry42 于 2019-8-14 18:59 编辑
STM8打算用tiM4做个DelayMS的函数,发生一个奇怪的现象 逻辑是,用TIM4中断做计数器,希望达到 elapseTime 每隔0.1ms +1。 但是如果 HSI 1分频 TIM4 16分频,DelayMS是ok的 HSI 2分频 TIM4 8分频,DelayMS是ok的 HSI 4分频 TIM4 4分频,DelayMS是ok的 HSI 8分频 TIM4 2分频,DelayMS是正常的2倍,比较诡异 主要代码如下,请大家帮忙看看,谢谢大家 void CLK_Init() { CLK_DeInit(); CLK_HSIPrescalerConfig(CLK_PRESCALER_HSIDIV8); } void TIM_PWMInit() { TIM4_DeInit(); TIM4_TimeBaseInit(TIM4_PRESCALER_2, 100); TIM4_ITConfig(TIM4_IT_UPDATE, ENABLE); TIM4_SetCounter(0x00); TIM4_Cmd(ENABLE); } void DelayMS(unsigned int ms) { unsigned long lmttime = elapseTime + ms * 10; while(lmttime >= elapseTime); return; } extern unsigned long elapseTime = 0; INTERRUPT_HANDLER(TIM4_UPD_OVF_IRQHandler, 23) { elapseTime++; TIM4_ClearITPendingBit(TIM4_IT_UPDATE); } |
|
相关推荐
2个回答
|
|
我的建议是。运行情况不符合预期的时候,先全速运行。然后让程序停下来, 打开定时器 寄存器观察窗口,把关于分频等 寄存器的值全部核查一下。是不是你想要的那个结果。
|
|
|
|
好棒,这种资料太受用了
|
|
|
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
2049 浏览 1 评论
AD7686芯片不传输数据给STM32,但是手按住就会有数据。
1893 浏览 3 评论
4485 浏览 0 评论
如何解决MPU-9250与STM32通讯时,出现HAL_ERROR = 0x01U
2040 浏览 1 评论
hal库中i2c卡死在HAL_I2C_Master_Transmit
2549 浏览 1 评论
小黑屋| 手机版| Archiver| 德赢Vwin官网 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-21 22:27 , Processed in 0.554179 second(s), Total 73, Slave 57 queries .
Powered by 德赢Vwin官网 网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
德赢Vwin官网 观察
版权所有 © 湖南华秋数字科技有限公司
德赢Vwin官网 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号