[STM32F1]

STM32F103关闭TIM4时钟,写flash导致死机

[复制链接]
1279|8
手机看帖
扫描二维码
随时随地手机跟帖
寻梦者在路上|  楼主 | 2017-9-20 14:53 | 显示全部楼层 |阅读模式
我在调试程序的时候发现一个问题:
关闭TIM4时钟,再读写flash,会导致死机。就是这句话:RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM4, DISABLE);
如果改为关闭TIM4中断,则一切正常,即TIM_ITConfig(TIM4, TIM_IT_Update|TIM_IT_Trigger,DISABLE);
请问各位高手,这是什么原因呢?
feelhyq| | 2017-9-20 15:06 | 显示全部楼层
你说的死机是什么样的一个现象呢?

使用特权

评论回复
寻梦者在路上|  楼主 | 2017-9-20 15:19 | 显示全部楼层
就是程序停在一个地方不动了,按键也没反应,只能重启。

使用特权

评论回复
feelhyq| | 2017-9-20 15:23 | 显示全部楼层
上代码

使用特权

评论回复
寻梦者在路上|  楼主 | 2017-9-20 15:42 | 显示全部楼层
知道是啥原因了!
原来的程序是这样的:
RCC_HSICmd(ENABLE);                                    
RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM4, DISABLE);  
改成这样:
RCC_HSICmd(ENABLE);                                    
while(RCC_GetFlagStatus(RCC_FLAG_HSIRDY) == RESET);     
RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM4, DISABLE);  
就没问题了!需要等待HSI时钟准备好,才能再操作其他的时钟!

使用特权

评论回复
feelhyq| | 2017-9-20 16:12 | 显示全部楼层
本帖最后由 feelhyq 于 2017-9-20 16:28 编辑
**者在路上 发表于 2017-9-20 15:42
知道是啥原因了!
原来的程序是这样的:
RCC_HSICmd(ENABLE);                                    

学习了

使用特权

评论回复
mmuuss586| | 2017-9-20 21:02 | 显示全部楼层
**者在路上 发表于 2017-9-20 15:42
知道是啥原因了!
原来的程序是这样的:
RCC_HSICmd(ENABLE);                                    

可能是时钟都没准备好,你关时钟,导致硬件出错了;
程序跑飞

另外你上面这段程序,加在什么位置?

使用特权

评论回复
hanzhen654| | 2017-9-20 21:22 | 显示全部楼层
晶振配置的问题吧,选择外部晶振。

使用特权

评论回复
寻梦者在路上|  楼主 | 2017-9-21 16:27 | 显示全部楼层
mmuuss586 发表于 2017-9-20 21:02
可能是时钟都没准备好,你关时钟,导致硬件出错了;
程序跑飞

加在自动关机函数里面,关机前把几个参数写到flash里面。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

11

主题

141

帖子

4

粉丝