[CW32F030系列] 芯源 CW32 的 C 语言细节:低功耗与编译器优化陷阱

[复制链接]
7|0
芯源 CW32 系列在低功耗和通用控制场景使用较广,C 语言编程中有几个容易踩到的点:

1. 低功耗模式下要保证变量不被优化掉:进入睡眠前写入的唤醒标志建议用 volatile 修饰,否则编译器可能认为该变量后续无用而删掉写操作。

2. 开优化后延时循环可能被直接优化为空,做精确短延时要使用带 volatile 的计数变量或者调用库函数。

3. 弱符号(weak)常用于中断服务函数的默认实现,用户重定义时函数名和参数要完全一致,否则会链接到默认空实现,中断静默丢失。

4. 使用位带访问外设时,要按字地址映射计算别名地址,算错会写到相邻寄存器上。

5. 用结构体指针访问寄存器组时定义为 volatile 指针,避免编译器把多次读合并成一次。

以上,供参考。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

437

主题

3683

帖子

6

粉丝
快速回复 在线客服 返回列表 返回顶部
0