STM32开发板学习(四)——手把手编写跑马灯实验

手把手编写跑马灯实验

库函数版

实验步骤

STM32开发板学习(四)——手把手编写跑马灯实验_第1张图片

  • 使能相应IO口时钟
    查看时钟使能函数定义
    STM32开发板学习(四)——手把手编写跑马灯实验_第2张图片
    发现该函数实际是对寄存器-APB2ENR进行操作

    入口参数判断IS_RCC_APB2_PERIPH是否有效STM32开发板学习(四)——手把手编写跑马灯实验_第3张图片
    使能谁,复制谁 STM32开发板学习(四)——手把手编写跑马灯实验_第4张图片
    判断IS_FUNCTIONAL_STATE
    STM32开发板学习(四)——手把手编写跑马灯实验_第5张图片
    判断是否是使能状态
    在这里插入图片描述

  • 初始化IO口模式

  • 操作IO口,输出高低电平

1.工程模板下新建硬件文件夹,.c .h文件,并添加进project

STM32开发板学习(四)——手把手编写跑马灯实验_第6张图片
STM32开发板学习(四)——手把手编写跑马灯实验_第7张图片
在头文件(.h)中对函数进行声明
STM32开发板学习(四)——手把手编写跑马灯实验_第8张图片
在源文件(.c)中对函数进行具体定义

  • 使能相应IO口时钟
    STM32开发板学习(四)——手把手编写跑马灯实验_第9张图片
    也可写作
    STM32开发板学习(四)——手把手编写跑马灯实验_第10张图片

  • 初始化IO口模式,调用函数GPIO_Init()
    STM32开发板学习(四)——手把手编写跑马灯实验_第11张图片
    STM32开发板学习(四)——手把手编写跑马灯实验_第12张图片
    GPIO_TypeDef* GPIOx → GPIOB
    GPIO_InitTypeDef* GPIO_InitStruct → GPIO_InitStructure
    STM32开发板学习(四)——手把手编写跑马灯实验_第13张图片
    定义GPIO_InitStructure过程:
    STM32开发板学习(四)——手把手编写跑马灯实验_第14张图片
    STM32开发板学习(四)——手把手编写跑马灯实验_第15张图片
    STM32开发板学习(四)——手把手编写跑马灯实验_第16张图片

  • 操作IO口,输出高低电平
    GPIO_SetBits
    GPIO_ResetBits
    void GPIO_SetBits(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin)
    void GPIO_ResetBits(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin)
    查找自己使用开发板原理图查看LED对应引脚
    本文使用正点原子精英STM32F103,LED0对应PB5,LED1对应PE5
    STM32开发板学习(四)——手把手编写跑马灯实验_第17张图片
    点亮LED:
    GPIO_SetBits(GPIOB,GPIO_Pin_5);
    GPIO_SetBits(GPIOE,GPIO_Pin_5);
    熄灭LED:
    GPIO_ResetBits(GPIOB,GPIO_Pin_5);
    GPIO_ResetBits(GPIOE,GPIO_Pin_5);

主程序文件(main.c)编写

  1. 程序框架搭建
    STM32开发板学习(四)——手把手编写跑马灯实验_第18张图片
  2. 操作IO口输出高低电平
    STM32开发板学习(四)——手把手编写跑马灯实验_第19张图片
  3. 加入延迟效果
    STM32开发板学习(四)——手把手编写跑马灯实验_第20张图片
  4. 烧录程序
  5. 观察现象

寄存器版

实验步骤

STM32开发板学习(四)——手把手编写跑马灯实验_第21张图片

  1. 使能IO口时钟。配置寄存器RCC_APB2ENR
    新建工程模板
    在stm32f10x.h中查看RCC写法
    STM32开发板学习(四)——手把手编写跑马灯实验_第22张图片
    STM32开发板学习(四)——手把手编写跑马灯实验_第23张图片
    添加时钟定义寄存器及所引用到的头文件
    STM32开发板学习(四)——手把手编写跑马灯实验_第24张图片
    在中文参考手册中查看使能IO口时钟需要控制寄存器中哪些位
    STM32开发板学习(四)——手把手编写跑马灯实验_第25张图片
    STM32开发板学习(四)——手把手编写跑马灯实验_第26张图片
    只需操作第3位及第6位
    操作位3使能GPIOB
    STM32开发板学习(四)——手把手编写跑马灯实验_第27张图片
    或运算:A|=B; 即A=A|B;
    RCC->APB2ENR|=1<<3; 即RCC->APB2ENR或等于1左移三位
    STM32开发板学习(四)——手把手编写跑马灯实验_第28张图片
    如图所示,其他位或0则不影响原有数值,第三位或1计算,不论原值0/1第三位都会变为1
    同理,操作位6使能GPIOE
    STM32开发板学习(四)——手把手编写跑马灯实验_第29张图片
  2. 初始化IO口模式。配置寄存器GPIOx_CRH/CRL
    LED0对应PB5,LED1对应PE5
    操作GPIO寄存器
    在中文参考手册中查看端口配置寄存器
    CRL控制0-7位,CRH控制8-15位,本实验操作第5位即控制CRL
    STM32开发板学习(四)——手把手编写跑马灯实验_第30张图片
    即对20-23进行赋值,赋值前先使用与运算(&)将对应位数清零
    STM32开发板学习(四)——手把手编写跑马灯实验_第31张图片
    该写法为16进制写法,与二进制进行转换
    FF0FFFFF(16进制)>11111111000011111111111111111111(2进制)
    (0x开头是十六进制的标识符,也可写作FF0FFFFFH)
    STM32开发板学习(四)——手把手编写跑马灯实验_第32张图片
    清零后用或运算(|)对20-23赋值0011(2进制)>3(16进制)
    STM32开发板学习(四)——手把手编写跑马灯实验_第33张图片
  3. 操作IO口,输出高低电平。配置寄存器GPIOx_ODR或者BSRR/BRR
    STM32开发板学习(四)——手把手编写跑马灯实验_第34张图片
    第5位输出高电平STM32开发板学习(四)——手把手编写跑马灯实验_第35张图片
    编写主函数
    STM32开发板学习(四)——手把手编写跑马灯实验_第36张图片
    添加延时及输出低电平
    STM32开发板学习(四)——手把手编写跑马灯实验_第37张图片
    ~非运算第5位赋值1后取反为0(多位数复杂操作时可先非后与)
    STM32开发板学习(四)——手把手编写跑马灯实验_第38张图片

你可能感兴趣的:(STM32开发板学习,STM32,单片机,物联网)