zoukankan      html  css  js  c++  java
  • 05、位带操作和volatile关键字

    位带操作可以理解为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 进行修饰,让编译器不要优化该变量。

  • 相关阅读:
    mount命令详解
    traceroute命令详解
    etcd节点扩容至两个节点
    shell历史命令
    etcd单节点安装
    linux中修改环境变量及生效方法
    ansible最佳实战部署nginx
    用roles部署nginx
    playbook部署mangodb
    安装mangodb
  • 原文地址:https://www.cnblogs.com/lp06/p/11847488.html
Copyright © 2011-2022 走看看