• 使用寄存器点亮LED


    1. 项目:使用stm32寄存器点亮LED, 分别点亮红、绿、蓝3个灯。

    2. 代码:

      只需要编写main.c程序,stm3210x.h程序为空(只需要新建即可)。

      2.1 点亮绿灯main.c程序

    #include "stm32f10x.h"
    
    int main(void)
    {
    	//打开GPIOB端口的时钟
    	*(unsigned int * )0x40021018 |= ((1)<<3);	//置位1
    
    	//配置IO口为输出,设置PB0输出低电平,点亮绿灯
    	*(unsigned int * )0x40010c00 |= ((1)<<(4*0));	//置位1
    	//控制ODR寄存器
    	*(unsigned int *)0x40010c0c &= ~(1<<0);	//清0	
    	
    }
    
    void SystemInit(void)
    {
    	//函数体为空给,为了骗过编译器不报错
    }
    

      

       2.2 点亮红灯main.c程序

      这里只需要修改port口PB5输出低电平即可

    #include "stm32f10x.h"
    
    int main(void)
    {
    	//打开GPIOB端口的时钟
    	*(unsigned int * )0x40021018 |= ((1)<<3);	//置位1
    	//配置IO口为输出,设置PB5输出低电平,点亮红灯
    	*(unsigned int*)0x40010c00 |= ((1)<<(4*5));	//置位1
    	//控制ODR寄存器
    	*(unsigned int *)0x40010c0c &= ~(1<<0);	//清0
    }
    
    void SystemInit(void)
    {
    	//函数体为空给,为了骗过编译器不报错
    }
    

      2.3 点亮蓝灯main.c程序

    #include "stm32f10x.h"
    
    int main(void)
    {
    	//打开GPIOB端口的时钟
    	*(unsigned int * )0x40021018 |= ((1)<<3);	//置位1
    	//配置IO口为输出,设置PB1输出低电平,点亮蓝灯
    	*(unsigned int*)0x40010c00 |= ((1)<<(4*1));	//置位1
    	//控制ODR寄存器
    	*(unsigned int *)0x40010c0c &= ~(1<<0);	//清0
    }
    
    void SystemInit(void)
    {
    	//函数体为空给,为了骗过编译器不报错
    }
    

    3. 思路总结

      stm32点亮LED需要3步:

        (1)打开GPIO端口时钟

        (2)配置GPIO工作模式/速度,输入/输出

        (3)控制GPIO输出高低电平

        

       

     

         

      

  • 相关阅读:
    新手Cocoa&Objectivec的进阶
    设计模式六大原则
    仿IOS Launch 欢迎界面
    新手开发IOS的疑惑,待补充
    Windows xp系统Hal.dll文件损坏的解决办法
    上班五年了!总结一下收获篇
    关于理财:摘自“华夏基金网”
    《雪》
    上班五年了!总结一下性格篇
    索尼爱立信M608C使用心得!
  • 原文地址:https://www.cnblogs.com/kevin-hou1991/p/15284309.html
Copyright © 2020-2023  润新知