完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
第一讲 基于STM32CubeMX的STM32F103流水灯教程(新手借个地方做笔记)
一、了解GPIO结构 二、GPIO的工作模式 GPIO有8种工作模式 1.输入浮空 当GPIOx_ CRL 或GPIOx_CRH 寄存器的CNF[1:0]位设置为01,并且MODE[1:O]位设置为00时,对应引脚被设置为浮空输入模式,该模式也是STM32复位之后默认模式。浮空输入模式是相对与上拉或者下拉输入模式,浮空就是不上拉也不下拉。浮空输入模式下GPIO结构中信号流向见图11-2。 I/O引脚信号接入到施密特触发器的输入端,在每来一个APB2时钟脉冲就把输入端的信号传输到触发器的输出端,施密特触发器的输出端又是与输入数据寄存器(GPIOx_IDR)连通的,所以该数据就保存在输入数据寄存器内,寄存器本身就是一个存储单元(起到缓冲区效果),所以输入数据寄存器保存着I/O引脚电平。 2.输入上拉模式 输入上拉模式就是在浮空输入模式基础上使能输入电路中的上拉开关,该开关由输出数据寄存器(GPIOx_ODR)引脚对应位设置为1来使能。输入上拉模式下GPIO结构中信号流向见图11-3。 3.输入下拉模式 输入下拉模式也是在浮空输入模式基础.上使能了输入电路中的下拉开关,该开关由输出数据寄存器(GPIOx_ODR)引脚对应位设置为0来使能。输入下拉模式下GPIO结构中信号流向见图11-4。 4.模拟输入模式 当STM32需要进行AD(模数)转换时,需要把引脚设置为模拟输入模式,该模式需要配合ADC外设使用,否则没有意义。模拟输入模式下GPIO结构中信号流向见图11-5。 此时,GPIO 完全只是一个通路,最后信号流入到AD转换电路中,更具体在AD转换章节介绍。 5.开漏通用输出模式 通用输出模式就是做为普通用途的输出模式,比如简单地控制引脚输出高低电平。GPIO的输出是由一个PMOS管和一个NMOS管组合形成的反相器驱动。开漏电路概念中的“漏”是指MOS管的漏极(D),实际只是利用到NMOS管,PMOS管在开漏模式下是没有用到的,开漏通用输出模式下GPIO结构中信号流向见图11-6。 目的:控制I/O引脚开漏输出高电平。STM32实际流程: CPU把端口位设置/清除寄存器(GPIOx_ BSRR)引脚对应外设置为1,然后驱动端口输出数据寄存器(GPIOx_ ODR)对应位为1,实际上也可以让CPU直接GPIOx_ ODR 寄存器引脚对应位写入1。GPIOx_ODR寄存器通过一个选择电路(与复用功能输出做选择)后输入到输出控制电路,经过输出控制电路后在NMOS控制线输出低电平,这时NMOS管截止(PMOS管不被激活),引脚呈高阻状态,不会有电流流动。 目的:控制I/0引脚开漏输出低电平。STM32实际流程:CPU把端口位设置/清除寄存器(GPIOx_BSRR)或者端口位清除寄存器(GPIOx_BRR)引脚对应外设置为1,然后驱动输出数据寄存器(GPIOx_ODR)对应位为0,实际上也可以让CPU直接往GPIOx_ODR寄存器引脚对应位写入0。GPIOx_ODR寄存器通过一个选择电路(与复用功能输出做选择)后输入到输出控制电路,经过输出控制电路后在NMOS控制线输出高电平,这时NMOS管导通(PMOS管不被激活),引脚呈低电平状态,允许有电流从引脚流入。另外,整个过程施密特触发输入是被激活的,出现在I/O脚上的数据在每个APB2时钟被采样到输入数据寄存器,对输入数据寄存器的读访问可得到I/O状态。 6.推挽通用输出模式 推挽输出与开漏输出原理理解都是差不多的,不同的重点在于输出控制电路驱动反相器的不同,就是推挽输出把PMOS管和NMOS管都用上了,开漏输出只用了NMOS管,PMOS管完全不用。推挽通用输出模式下GPIO结构中信号流向见图11-7。 对于推挽输出模式,CPU对端口位设置/清除寄存器、端口输出数据寄存器操作都是与开漏输出一样的过程,只有在输出控制电路对反相器的控制不同。需要控制I/O引脚推挽模式输出1。此时数据输出寄存器(GPIOx_ODR)输出1,该信号输入到输出控制电路,之后输出控制电路在PMOS控制线输出低电平,此时PMOS管导通,同时在NMOS控制器输出低电平,此时NMOS管截止,最终I/O引脚呈高电平状态,如果构成回路可以有电流从引脚流出。 需要控制I/O引脚推挽模式输出0。此时数据输出寄存器(GPIOx_ODR)输出0,该信号输入到输出控制电路,之后输出控制电路在PMOS控制线输出高电平,此时PMOS管截止,同时在NMOS控制器输出高电平,此时NMOS管导通,最终I/O引脚呈低电平状态,如果构成回路可以有电流从引脚流入。在推挽输出模式下,也是可以在端口输入数据寄存器读取到当前I/O引脚状态的。 7.推挽复用功能输出模式 一个I/O引脚可以做为普通的IO接口,还可以做为其他外设的特殊功能引脚,有些引脚可能有4、5种不同功能,这种现象就叫做复用。引脚复用为特殊功能引脚,那引脚状态就由该外设决定,在推挽复用功能输出模式是引脚信号流向具体见图11-8。 原理分析参考推挽输出模式就好,此处不再啰嗦。 8.开漏复用功能输出模式 三、STM32CubeMX生成 1.点击File/New Project。 2.点开Core,选择M3 3.点开Series,选择STM32F1。 4.以此类推,Line/STM32F1103 Package/LQFP144 5.双击选择STMF103ZE 6.选择RCC 7.选择LED灯引脚PB5、PE5,并分别设置为GPIO_Output模式。 8.点开System Core/GPIO,将引脚参数设置为下图 9.时钟树设置 9.命名工程,保存到对应路径。 10.点开Code Generator,将Generated files 栏中的第一栏打钩,点击右上方的GENERATE CODE,完成工程创建。 11.打开keil软件,按照路径打开GPIO_LED工程,在main.c文件写程序 |
|
|
|
只有小组成员才能发言,加入小组>>
调试STM32H750的FMC总线读写PSRAM遇到的问题求解?
1804 浏览 1 评论
X-NUCLEO-IHM08M1板文档中输出电流为15Arms,15Arms是怎么得出来的呢?
1629 浏览 1 评论
1097 浏览 2 评论
STM32F030F4 HSI时钟温度测试过不去是怎么回事?
736 浏览 2 评论
ST25R3916能否对ISO15693的标签芯片进行分区域写密码?
1686 浏览 2 评论
1944浏览 9评论
STM32仿真器是选择ST-LINK还是选择J-LINK?各有什么优势啊?
748浏览 4评论
STM32F0_TIM2输出pwm2后OLED变暗或者系统重启是怎么回事?
583浏览 3评论
604浏览 3评论
stm32cubemx生成mdk-arm v4项目文件无法打开是什么原因导致的?
565浏览 3评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-29 01:40 , Processed in 0.397758 second(s), Total 42, Slave 37 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号