完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
我正在使用 GCC 和 eclipse CDT。我需要非常快地执行一个外部中断(每 4µs)。那里没什么可做的,但我在中断处理程序中使用了大约 2.5µs 的时间。我尝试将处理程序放入 ram,这给了我截断以适合的重定位:R_ARM_THM_CALL against symbol error。
我使用 __attribute__ ((section(".data"))) 将处理程序放入数据部分。重置处理程序将数据部分复制到 ram。在链接器中,数据部分定义为 。数据 : { _数据 = .; *(.data) /* 数据内存 */ _edata = .; } >ram 在 > 只读存储器 现在我的问题是可能出了什么问题。STM32F103C8 有 20K 的 RAM。加上所有变量,这应该绰绰有余。 另一种方法是预先缓存中断代码并将其保存在代码中。那可能吗? 当我通过切换引脚查看代码执行时,中断似乎在触发中断后大约 900ns 触发。因此,在我执行 2.5µs 的情况下,它给我留下了 500ns 的余量。我想多挤一些我无法在中断之外处理的东西。因此我需要优化速度。 我从来没有尝试过这样做,也找不到任何完整的例子。 |
|
相关推荐
1个回答
|
|
我用数据定义了一个自己的部分:
。数据 : { _数据 = .; *(.data) /* 数据内存 */ . =对齐(4); *(.rfunc) _edata = .; } >ram 在 > 只读存储器 并将中断放入rfunc。性能提高。执行时间从之前的 2.416µs 降至 1.875µs!虽然延迟没有改变。 |
|
|
|
只有小组成员才能发言,加入小组>>
请教:在使用UDE STK时,单片机使用SPC560D30L1,在配置文件怎么设置或选择?里面只有SPC560D40的选项
2653 浏览 1 评论
3214 浏览 1 评论
请问是否有通过UART连接的两个微处理器之间实现双向值交换的方法?
1788 浏览 1 评论
3617 浏览 6 评论
5996 浏览 21 评论
944浏览 4评论
1318浏览 4评论
在Linux上安装Atollic TRUEStudio的步骤有哪些呢?
589浏览 3评论
使用DMA激活某些外设会以导致外设无法工作的方式生成代码是怎么回事
1307浏览 3评论
1367浏览 3评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-28 04:18 , Processed in 1.086678 second(s), Total 78, Slave 61 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号