智能车制作

 找回密码
 注册

扫一扫,访问微社区

12
返回列表 发新帖
楼主: cah506798484
打印 上一主题 下一主题

野火FX烧程序卡死在while( !(SYST_CSR & SysTick_CSR_COUNTFLAG_MASK))

[复制链接]

4

主题

12

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
289
威望
155
贡献
80
兑换币
84
注册时间
2016-1-11
在线时间
27 小时
毕业学校
广东海洋大学
11#
发表于 2016-6-3 21:35:31 | 只看该作者
编写浮点运算程序时,虽然编译器正确产生了V指令来进行浮点运算,但是因为systemXXX.c文件没有启用FPU,因此CPU执行时只认为是遇到非法指令而跳转到HardFault_Handler()中断中原地踏步。因此要保证这个错误不发生,必须要在system_init()函数里面添加如下代码:

    SCB->CPACR |= ((3UL << 10*2)|(3UL << 11*2));
添加在system_xxx.c中的:
void start(void)
{
    wdog_disable();     // 关闭看门狗

    common_startup();   // 复制中断向量表 和 必要的数据到 RAM里

    sysinit();          // 系统初始化,设置系统频率,初始化printf端口

    //为了防止 main 函数 里 复用了 下载口,导致 下载失败,此处增加 按下 KEY_A 就进入死循环
    SRART_CHECK();

    gpio_init(PTA4,GPO,1);  //初始化为输出1,即 禁用了 NMI 中断

    SCB->CPACR |=((3UL << 10*2)|(3UL << 11*2));     //开硬件浮点运算
        
    main();             // 执行用户主函数

    while(1);           // 死循环
}
回复 支持 1 反对 0

使用道具 举报

0

主题

21

帖子

0

精华

高级会员

Rank: 4

积分
953
QQ
威望
483
贡献
280
兑换币
306
注册时间
2015-10-27
在线时间
95 小时
12#
发表于 2017-1-10 09:30:04 | 只看该作者
11#完美解决了我的问题!感谢
回复 支持 反对

使用道具 举报

4

主题

37

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
262
威望
128
贡献
84
兑换币
78
注册时间
2016-12-18
在线时间
25 小时
毕业学校
山东科技大学
13#
发表于 2017-1-15 12:41:21 | 只看该作者
改了还是不行啊
回复 支持 反对

使用道具 举报

1

主题

7

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
214
威望
104
贡献
68
兑换币
66
注册时间
2017-1-7
在线时间
21 小时
毕业学校
嘉兴学院
14#
发表于 2017-2-18 16:46:44 | 只看该作者
释放 发表于 2015-4-1 22:25
中断优先级设置有问题或者是你的程序初始化有问题

请问一下,为什么程序初始化有问题就会卡死在这呢?
回复 支持 反对

使用道具 举报

0

主题

9

帖子

0

精华

高级会员

Rank: 4

积分
609
威望
311
贡献
204
兑换币
201
注册时间
2015-11-21
在线时间
47 小时
毕业学校
史莱克学院
15#
发表于 2017-3-19 14:07:18 | 只看该作者
这个问题我也遇到过,我是将K60的PTD7与外设划断就好,PTD7具有上访功能
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

关于我们|联系我们|小黑屋|智能车制作 ( 黑ICP备2022002344号

GMT+8, 2024-12-25 14:13 , Processed in 0.073457 second(s), 23 queries , Gzip On.

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表