完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
你好!!!!在我的项目(PIC32MZ2048EFM100,FreeRTOS 10,XC32 1.44)中,随着中断数量的增加,它们停止工作的ifebase_address不是多个32kB。只有在_ebase_address=0x9D000000或0x9D008000或0x9D010000时才能工作。在数据表中,表示对齐应该在4kB上。有什么问题吗?谢谢您!
|
|
相关推荐
6个回答
|
|
对齐是基于CP0EBASE寄存器,它定义了向量表所在的位置。它定义了位31到12(其中31和30分别定义为1和0)。当您尝试4kB对齐时,Ebase寄存器的内容是什么?
|
|
|
|
寄存器EBASE包含链接器脚本设置的值-9D00,或9D1001000为4K对齐。
|
|
|
|
IfEasBaseAddio= 0x9D04000(例如),一旦UART RX中断相关,应用程序就会遇到一般故障。IF.EbasyAdvest= 0x9D08000——应用程序在任何中断后运行良好。
|
|
|
|
我找到了解决这个问题的办法!!!!问题在于缺少来自Microchip的正确文档。MIPS文档对此中断行为进行了解释。“当使用大向量间隔和EIC模式时,偏移值可以与EBaseregister中指定的位重叠。软件必须确保在EBASE中将任何重叠位指定为0。这个实现OR将偏移寄存器和基寄存器结合在一起,但是它在架构上是未定义的,并且软件不应该依赖于这种行为。WEnBASE设置为0x9D000 4000和OFX.GT;0x4000——计算中断后跳转的地址是不正确的。
|
|
|
|
有趣。我也学会了FRIERTOS需要它在0x8000上对齐的困难方式。你是什么意思我的OXX& GT?0x4000?
|
|
|
|
我的意思是写在寄存器OFFx(大于0x4000)中的值,例如0x4023。这个值可以在编译代码之后进行检查。虽然中断处理程序的代码量很小,并且放在小于0x4000的部分中,但是一切都工作得很好。
|
|
|
|
只有小组成员才能发言,加入小组>>
5242 浏览 9 评论
2031 浏览 8 评论
1955 浏览 10 评论
请问是否能把一个ADC值转换成两个字节用来设置PWM占空比?
3207 浏览 3 评论
请问电源和晶体值之间有什么关系吗?PIC在正常条件下运行4MHz需要多少电压?
2256 浏览 5 评论
778浏览 1评论
669浏览 1评论
有偿咨询,关于MPLAB X IPE烧录PIC32MX所遇到的问题
596浏览 1评论
PIC Kit3出现目标设备ID(00000000)与预期的设备ID(02c20000)不匹配。是什么原因
678浏览 0评论
577浏览 0评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-23 21:36 , Processed in 1.339957 second(s), Total 89, Slave 72 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号