完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
看见很多函数前加了void ICACHE_FLASH_ATTR,这句是什么意思?什么情况下需要加上ICACHE_FLASH_ATTR。
|
|
相关推荐
1个回答
|
|
`ICACHE_FLASH_ATTR` 是一个宏定义,通常用于 ESP8266 和 ESP32 这类基于 Xtensa 架构的微控制器。它的作用是将函数存储在程序的 Flash 存储器中,而不是 RAM 中。这样做可以节省 RAM 空间,因为 Flash 存储器通常比 RAM 大得多。
在某些情况下,需要将函数定义为 `ICACHE_FLASH_ATTR`: 1. 当你的应用程序需要节省 RAM 空间时。将函数存储在 Flash 中可以减少 RAM 的占用。 2. 当你需要确保函数代码在程序运行期间不会被修改时。存储在 Flash 中的代码是只读的,这可以防止意外修改。 3. 当你的应用程序需要在启动时快速加载函数时。由于 Flash 存储器的读取速度通常比 RAM 快,因此将函数存储在 Flash 中可以加快程序的启动速度。 然而,使用 `ICACHE_FLASH_ATTR` 也有一些缺点: 1. Flash 存储器的写入次数有限,频繁地写入 Flash 可能会导致设备损坏。 2. Flash 存储器的读取速度可能比 RAM 慢,这可能会影响程序的性能。 3. 将函数存储在 Flash 中可能会导致代码更难调试,因为 Flash 中的代码不能像 RAM 中的代码那样容易地进行修改和测试。 总之,`ICACHE_FLASH_ATTR` 是一个用于将函数存储在 Flash 存储器中的宏定义。在需要节省 RAM 空间、确保代码安全或加快启动速度的情况下,可以考虑使用它。但是,也要注意它可能带来的一些缺点。 |
|
|
|
只有小组成员才能发言,加入小组>>
1108 浏览 1 评论
574浏览 6评论
477浏览 5评论
有没有办法在不使用混杂模式的情况下实现Wifi驱动程序接收缓冲区访问中断呢?
460浏览 5评论
461浏览 4评论
435浏览 4评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-19 01:21 , Processed in 0.733182 second(s), Total 46, Slave 40 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号