[其他ST产品] STM32F3 GPIO的八种模式及工作原理

[复制链接]
3933|58
 楼主| kzlzqi 发表于 2023-5-31 14:44 | 显示全部楼层
端口输出数据寄存器ODR
326306476ecc5779bd.png
 楼主| kzlzqi 发表于 2023-5-31 14:49 | 显示全部楼层
端口位设置/清除寄存器BSRR
781166476ede443a86.png
 楼主| kzlzqi 发表于 2023-5-31 14:49 | 显示全部楼层
端口位清除寄存器BRR
825096476edf5d29d3.png
 楼主| kzlzqi 发表于 2023-5-31 14:49 | 显示全部楼层
端口配置锁定寄存器LCKR
 楼主| kzlzqi 发表于 2023-5-31 14:50 | 显示全部楼层
编写程序

上面介绍了GPIO的8中工作模式以及GPIO的寄存器使用,那么在控制GPIO之前需要配置GPIO的工作模式,这是STM32和51单片存在区别的地方。51单片的引脚功能是确定的,而STM32的引脚都是可以复用的,程序配置GPIO的方式有两种,一种是通过库文件的方法进行配置,另一种是通过寄存器进行配置,由于库文件的配置方式比较简单,网上也有很多文章讲解,这里我以寄存器为例进行学习。
注意:STM32的所用引脚都可以用于中断
程序是基于之前创建的项目模板(寄存器版)中进行更改即可,没创建过STM32项目的小伙伴浏览之前的STM32新建模板之库文件和STM32新建模板之库文件。
 楼主| kzlzqi 发表于 2023-5-31 16:09 | 显示全部楼层
本帖最后由 kzlzqi 于 2023-5-31 16:10 编辑

更改main.c文件为一下内容即可

  1. #include "stm32f10x.h"
  2. #include "sys.h"
  3.        
  4. /*------------------------------------------------------------
  5.                            主函数
  6. ------------------------------------------------------------*/
  7. int main()
  8. {

  9.         RCC->APB2ENR|=0X0000001c;//先使能外设IO PORTa,b,c时钟
  10.        
  11.         RCC->APB2ENR |= 1 << 12;

  12.         GPIOB->CRH=0X00030000;    //设置GPIOB的12引脚为推挽输出

  13.         while (1)
  14.         {                       
  15.                 delay_ms(100);              
  16.                 GPIOB->ODR = ~(1 << 12);        //设置12引脚输出0

  17.                 delay_ms(100);
  18.                 GPIOB->ODR |= 1 << 12;                //设置12引脚输出1

  19.         }
  20. }



 楼主| kzlzqi 发表于 2023-5-31 16:38 | 显示全部楼层
这是一个led闪烁的程序,编译下载运行即可
jackcat 发表于 2023-6-7 21:23 | 显示全部楼层
可选择的输入模式:浮动输入和带上拉输入 可选择的输出模式:推挽式输出和开漏输出 数据输入和输出采用独立的寄存器 外部中断可以单独使能和关闭
MessageRing 发表于 2023-6-7 22:28 | 显示全部楼层
寄存器开发?
jimmhu 发表于 2023-6-8 13:50 | 显示全部楼层
推挽输出模式适用于驱动大电流负载。2
bestwell 发表于 2023-6-8 14:37 | 显示全部楼层
gpio的配置模式有哪几种              
jimmhu 发表于 2023-6-8 16:41 | 显示全部楼层
GPIO的工作模式主要有八种:4种输入方式,4种输出方式,分别为输入浮空,输入上拉,输入下拉,模拟输入;输出方式为开漏输出,开漏复用输出,推挽输出,推挽复用输出。
鹿鼎计 发表于 2023-6-9 17:14 | 显示全部楼层
有哪些gpio配置模式
Undshing 发表于 2023-6-9 22:57 | 显示全部楼层
四种输出模式都带上下拉吗?
mattlincoln 发表于 2023-6-13 22:19 | 显示全部楼层
将GPIO设置为ADC输入端口,可以实现模拟信号采集。
Stahan 发表于 2023-6-13 22:52 | 显示全部楼层
开漏输出和推挽输出的区别是什么啊?
nomomy 发表于 2023-6-14 09:44 | 显示全部楼层
将GPIO口设置为事件模式,当外部信号引起GPIO口电平变化时,会产生一个事件,并触发对应的事件处理程序。
belindagraham 发表于 2023-6-14 12:46 | 显示全部楼层
将GPIO口设置为输入模式,可以用于读取外设或传感器输出的数字信号。
mollylawrence 发表于 2023-6-14 14:47 | 显示全部楼层
输入模式 用于读取外部信号输入,可以设置为上拉、下拉或者浮空输入。
abotomson 发表于 2023-6-14 14:53 | 显示全部楼层
将GPIO口设置为开漏输出模式,输出电平为高时,GPIO口会被拉低,并且电流较小,适用于I2C总线等多点共享设备。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 在线客服 返回列表 返回顶部