首页 > 其他 > 详细

位带操作和volatile关键字

时间:2019-11-13 11:15:15      阅读:109      评论:0      收藏:0      [点我收藏+]

位带操作可以理解为LED编程的文件描述符映射到内存,相当与mmap函数

公式为:
#define 寄存器的位带别名 = 0x42000000+(寄存器的地址-0x40000000)84+引脚编号4
例:
#define PEout(x)
(uint32_t )(0x42000000+((uint32_t)&GPIOE->ODR-0x40000000)84+(x)4)
GPIOE->ODR获取端口的引脚电平

volatile关键字是让编译器不要优化该变量指的是防止编译器出现优化过度,导致代码运行失效

适用场合:
1)多线程编程共享全局变量的时候,该全局变量要加上 e volatile 进行修饰,让编译器不要优化该变量。
2)裸机编程的时候,某函数与中断服务函数共享全局变量的时候,该全局变量要加上 e volatile 进行修饰,让编译器不要优化该变量。
3)ARM 定义寄存器的时候,寄存器是指向一个地址,要加上 e volatile 进行修饰,让编译器不要优化该变量。

位带操作和volatile关键字

原文:https://www.cnblogs.com/lp06/p/11847488.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!