zfcjxlz 发表于 2013-3-12 20:06:34

LPC1788移植RTX后的NVIC中断使能问题

模块的NVIC使能函数
如果放在RTX内核启动之前,可以使用
放在内核启动之后,则当程序运行到这一句时会跳死
求大神指点迷津啊~

fastweb 发表于 2013-7-28 16:59:45

因为NVIC寄存器组是0xE00xxxxxx地址的,受系统保护。RTX的os_task_init之前,你是运行在特权模式,之后,你是运行在非特权模式,
所以凡是访问0xE开头的地址都会发生HardFault例外。
解决的办法有两个:
1.全体NVIC配置在进入初始化第一个任务前处理完毕。
2.RTX_Conf_CM3.h里面,配置所有任务运行于特权模式:你确定普通任务都要运行于特权模式?

zfcjxlz 发表于 2013-8-1 20:56:49

fastweb 发表于 2013-7-28 16:59 static/image/common/back.gif
因为NVIC寄存器组是0xE00xxxxxx地址的,受系统保护。RTX的os_task_init之前,你是运行在特权模式,之后,你 ...

非常感谢!
此外,网上有一个成熟的1788下RTX的CAN驱动,
在这个驱动里面,实现了把NVIC的启动放在内核启动之后,
应该是临时切换了模式,不过这个操作我还是没太看懂,
如果朋友你有兴趣可以去看一下。

myxiaonia 发表于 2014-6-27 13:37:01

zfcjxlz 发表于 2013-8-1 20:56
非常感谢!
此外,网上有一个成熟的1788下RTX的CAN驱动,
在这个驱动里面,实现了把NVIC的启动放在内核启 ...

用个自定义的svc函数,在那里设置nvic使能

霸气侧漏 发表于 2015-8-27 10:06:16

myxiaonia 发表于 2014-6-27 13:37
用个自定义的svc函数,在那里设置nvic使能

自定义的svc函数   怎么弄呢

myxiaonia 发表于 2015-8-27 11:50:47

mdk的exmaple中有个svc例子,和那个定义的方法几乎完全一样
页: [1]
查看完整版本: LPC1788移植RTX后的NVIC中断使能问题