STM32学习之路-点亮LED

℡╲_俬逩灬. 提交于 2020-03-30 01:53:06

STM32学习笔记—点亮led灯

STM32的I/O口有很多的功能,所以称为GPIO(GENERAL PURPOSE)

其中GPIO又分为A,B,C,D,E,F,G不同的组,每个组端口又分为0~15,共16个不同的引脚,不同的芯片引脚数量也不同,所用的学习板为STM32F103RBT6;

I/O口的八种模式:

输入浮空;                  模拟输入;

输入上拉;                  输入下拉;

开漏输出;                  推挽输出;

推挽式复用功能;  开漏复用功能;

每个I/O口可以自由编程,单I/O口寄存器必须按32位字节被访问。并且很多I/O口都是5V兼容的,手册当中标记FT的就是5V电平兼容的。

I/O的七个寄存器(register:(X=A,B,C,D….G)

32位端口配置低寄存器GPIOX_CRL;      选择作为输入还是输出

32位端口配置高寄存器GPIOX_CRH;     选择作为输入还是输出

32位端口输入数据寄存器GPIOX_IDR;              保存了输入电平还是输出电平

32位端口输出数据寄存器GPIOX_ODR;   保存了输入电平还是输出电平

32位端口位设置/清除寄存器GPIOX_BSRR; 设置控制的数据为0/1

32位端口位清除寄存器GPIOX_BRR;           设置控制的数据为0/1

32位端口配置锁定寄存器GPIOX_LCKR;设置锁定引脚后,不能修改其配置

 

32位端口配置低寄存器GPIOX_CRL(低8位):

 

一个I/O口有16个引脚,低八位配置pin0~pin7引脚;CRL寄存器中每四位控制一个引脚,分别为CNF[1:0]端口配置位和MODE[1:0]端口模式位

当MODEy[1:0]=00即输入模式(复位后的状态);  

CNFy[1:0]=00---模拟输入模式                                                   

                01---浮空输入模式(复位后的状态)

                10---上拉/下拉输入模式

                11---保留

当MODEy[1:0]>00即输出模式       

CNFy[1:0]=00---通用推挽输出模式 MODEy[1:0]=00---输入模式(复位后)

                     01---通用开漏输出模式                 01---输出模式,10MHz

                10---复用功能推挽输出模式        10---输出模式,2MHz

                11---复用功能开漏输出模式        11---输出模式,50MHz

 

例子:配置GPIOC的pin4管脚,其最大输出速度为10MHz的通用推挽输出模式,则:需配置GPIOC_CRL寄存器16到19位的CNFP[1:0]和MODE[1:0]的参数;MODE[1:0]=01,即16、17位写入01;CNF[1:0]=00;

32位端口位设置/清除寄存器GPIOX_BSRR;

 

其中BRy(y=0~31)位用于写入1时实现清零,使引脚输出低电平;BSy(y=0~32)位用于写入1时实现置1;写零是无效的。

 

STM32库的介绍:

  1. startup_stm32f10x_md.s是系统的启动文件,小苗板的芯片为STM32F103RBT6,FLASH为64k-128k之间,属于中等密度产品
  2. stm32f10x.h是把STM32的所有寄存器进行地址的映射,作用如头文件一样;
  3. 源文件core.c和头文件core.h是Cortex-M3核设计商提供的进入M3的内核接口
  4. system_stm32f10x.c是设置系统时钟和总线时钟
  5. stm32f10x_gpio.c是配置I/O口的库
  6. stm32f10x_rcc.c是每个外设都需要的头文件,用于配置系统时钟的外设时钟,包含了相应外设的C语言函数实现的声明,只有把头文件一起包含到工程中才能使用这些外设库
  7. stm32f10x_conf.h是专门用来管理所有库的头文件
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!