第一讲 基于STM32CubeMX的STM32F103流水灯教程(新手借个地方做笔记)

第一讲 基于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文件写程序在这里插入图片描述

  • 4
    点赞
  • 39
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要在STM32CubeMX配置PWM呼吸灯功能,你需要按照以下步骤进行操作: 1. 打开STM32CubeMX软件,并创建一个新的工程。 2. 选择你的STM32开发板型号(例如STM32F103C8)。 3. 在"Pinout & Configuration"选项卡,选择一个可用的GPIO引脚作为PWM输出引脚。通常情况下,你可以选择一个具有PWM功能的引脚,例如TIM1_CH1或TIM2_CH1。 4. 在"Configuration"选项卡,找到"TIMx"(x表示你选择的定时器)并启用它。选择PWM模式,并设置PWM频率为1kHz。 5. 在"Configuration"选项卡,找到"TIMx Channelx"(x表示你选择的定时器和通道)并启用它。设置通道的输出模式为PWM模式1或PWM模式2,具体选择哪种模式取决于你想要的输出电平极性。 6. 在"Project"选项卡,生成代码并导入到你的IDE(例如Keil)。 7. 在IDE编写代码,使用定时器的PWM输出通道来控制呼吸灯的亮度。你可以使用定时器的CCR寄存器来调整占空比,从而实现呼吸灯的效果。 请注意,以上步骤仅提供了一个大致的配置过程,具体的步骤可能会因为你的具体开发板型号和需求而有所不同。建议你参考STM32CubeMX的用户手册和相关的开发板文档,以获得更详细的配置指导。 #### 引用[.reference_title] - *1* [STM32CUBEMX_基于PWM的呼吸灯](https://blog.csdn.net/qq_58759694/article/details/127585308)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insert_down28v1,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* *3* [【STM32CubeMX】使用STM32F103C8T6输出PWM波形实现呼吸灯](https://blog.csdn.net/qq_52201641/article/details/127581116)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insert_down28v1,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值