打印
[STM32F1]

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

[复制链接]
1441|8
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
我在调试程序的时候发现一个问题:
关闭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 | 只看该作者
上代码

使用特权

评论回复
5
寻梦者在路上|  楼主 | 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时钟准备好,才能再操作其他的时钟!

使用特权

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

学习了

使用特权

评论回复
7
mmuuss586| | 2017-9-20 21:02 | 只看该作者
**者在路上 发表于 2017-9-20 15:42
知道是啥原因了!
原来的程序是这样的:
RCC_HSICmd(ENABLE);                                    

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

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

使用特权

评论回复
8
hanzhen654| | 2017-9-20 21:22 | 只看该作者
晶振配置的问题吧,选择外部晶振。

使用特权

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

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

使用特权

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

本版积分规则

11

主题

141

帖子

4

粉丝