zoukankan      html  css  js  c++  java
  • 使用内存地址点亮LED—跟51单片机一样写代码教学(初步入门)

    51单片机点亮一个小灯

              #include <rge52.h>
    
               sbit LED = P0^0
    
              void main(void)
             {
               P0 = 0XFE; // 总线操作 sfr P0 0X80
    
                LED = 0; // 位操作
             }

    STM32中

         

    STM32通过一个寄存器控制电平的输出ODR  ;CRL CRH实现在端口的配置(用绝地地址,目前我们没有寄存器映射,上篇文章有写。)

               配置PC2使LED点亮  下图为GPIOX_CRL的配置说明

             (四位控制一个GPIOx的端口我们要控制PC2也就是GBIOC的第二个引脚,故要配置CNF2和MODE2  配置为00 01 (00推挽输出)(01速度10MHZ))

                                   

                                             

                                             

                                                                   (对于GPIOC的时钟,只要打开4位置即可)

                                                        

    下面我们来算一下GPIOC_CRL和GPIOC_ODR以及所对应时钟(RCC_APB2ENR)的内存地址(STM32中文参考手册) 

    1.在存储器和总线架构中我们找到存储器映像 0x4001 1000 - 0x4001 13FF  GPIO端口C    0x4002 1000 - 0x4002 13FF   复位和时钟控制(RCC)

    2.在RCC寄存器描述中-> APB2外设时钟使能寄存器(RCC_APB2ENR) 可知道他相对于RCC的偏移地址位 0x18

    3.在通用和复用功能I/O(GPIO/AFIO)中,端口配置低寄存器(GPIOx_CRL) (x=A..E) 的偏移地址为0x00 端口输出数据寄存器(GPIOx_ODR) (x=A..E) 的偏移地址为0x0C
    4.这样我们可以算出

    GPIOC_CRL 的地址为:0x4001 1000+0x00=0x4001 1000;

    GPIOC_ODR的地址为:0x4001 1000+ 0x0C=0x4001 100c ;

    RCC_APB2ENR的地址为:0x4002 1000+0x18 =0x4002 1018;



    项目目录:

    main函数内容为:

           // 打开 GPIOB 端口的时钟
           *( unsigned int * )0x40021018|=  ( 1 << 4 );
        
           // 配置PC2 IO口为通用推挽输出,速度为10M

             *( unsigned int * )0x40011000 &=~ ( 0x0f << (4*2) );//GPIOC IO 4位清空
             *( unsigned int * )0x40011000 |= ( 1 << (4*2) );// 通用推挽输出,速度为10M

          // 控制 ODR 寄存器
           *( unsigned int * )0x4001100c &= ~(1<<2);//点亮
    //*( unsigned int * )0x4001100c |= (1<<2);//熄灭
  • 相关阅读:
    禅道
    centos7 安装redis 出现cc: command not found错误解决
    Linux 安装 redis
    vuex store modules
    vuex store 改造
    vuex store
    Vue axios
    Vue keep-alive
    vue 路由守卫
    vue-router 参数传递
  • 原文地址:https://www.cnblogs.com/wenshinlee/p/8805173.html
Copyright © 2011-2022 走看看