基于STM32单片机通过GPIO输出点亮LED灯-环球新要闻
一. GPIO初始化
STM32单片机和51单片机不同,51单片机只需与引脚相连后就可以使用引脚发出高低电平信号控制外部器件,而STM32单片机需要先对引脚进行配置(初始化),如果使用引脚用作I2C、SPI、USART等通讯接口时,就是所谓的复用功能时,就需要再配置外设的工作参数。
【资料图】
1.使能GPIO端口时钟;
RCC_APBxPeriphClockCmd(RCC_APBxPeriph_GPIOy , ENANLE/DISABLE);
函数表示使能或者不使能APBx(Advanced Peripheral Bus)的外设时钟,APBx表示时钟总线APB1或APB2,APB1为低速的外设时钟(最大为36MHz),APB2为高速的外设时钟(最大为72MHz)。GPIOy表示GPIO的端口(A.B.C...)。两个时钟总线上都挂载着不同的引脚端口和外设,使用时需要注意,APB1的使能函数不能使能挂载在APB2总线上的引脚端口和外设。
2.初始化GPIO目标引脚的工作模式
因为官方库函数已经将初始化GPIO的所需要的功能进行了封装,成为一个结构体,所以需要先定义一个GPIO_InitTypeDef类型的结构体。注意:定义结构体要放在GPIO配置函数内的第一行。
GPIO_InitTypeDef GPIO_InitStructure;
然后选择需要控制的引脚,x表示所控制端口的第几个引脚。
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_x;
然后设置引脚模式,xx表示8种不同的引脚模式,如果只是想要控制引脚的高低电平用于LED的亮灭控制,则可以选择GPIO_Mode_Out_PP(通用推挽输出);
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_xx;
然后设置引脚的速率,xx表示输出最大的频率,共有10MHz、2MHz、50MHz三种选择,速度越大,I/O口的相应速度越快,但相应的功耗和噪声也大。
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_xxMHz;
3.调用库函数,初始化GPIO端口
GPIOx为需要使用端口,在前面已经使能其的时钟;GPIO_InitStructure为第2步定义的结构体。
GPIO_Init(GPIOx, &GPIO_InitStructure);
4.定义引脚的高低电平
GPIO_SetBits(GPIOx , GPIO_Pin_y)表示将Px(y)的引脚拉高;
GPIO_ResetBits(GPIOx , GPIO_Pin_y)表示将Px(y)的引脚拉低;
二. 示例程序:通过控制引脚PB5输出高低电平实现led灯的亮灭。
“bsp_led.c” //led驱动文件#include "bsp_led.h"void LED_GPIO_Config(void){ GPIO_InitTypeDef GPIO_InitStructure; RCC_APB2PeriphClockCmd( RCC_APB2Periph_GPIOB , ENABLE ); GPIO_InitStructure.GPIO_Pin = GPIO_Pin_5; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; GPIO_Init(GPIOB, &GPIO_InitStructure); }"bsp_led.h" //led头文件#ifndef __LED_H#define __LED_H#include "stm32f10x.h"void LED_GPIO_Config(void);#define LED_OFF GPIO_SetBits(GPIOB , GPIO_Pin_5); //PB5引脚为低电平#define LED_ON GPIO_ResetBits(GPIOB , GPIO_Pin_5); //PB5引脚为高电平#endif /* __LED_H */"main.c" //主函数文件#include "stm32f10x.h"#include "bsp_led.h"void delay_ms(uint16_t nms) //延时函数,ms级别{ uint16_t i , j; for(i=0;i< 1000;i++) { for(j=0 ; i< 1000 ; j++) }}int main(void) //led循环亮灭各0.5秒{ LED_GPIO_Config(); while(1) { LED_ON; delay_ms(500); //延时500ms LED_OFF; delay_ms(500); //延时500ms }}
三. 电路图示意
LED接线示意图
当PB5为低电平时,led亮;当PB5为高电平时,led灭。由于led的内阻较小,而且有最大电流限制,所以需要串联电阻调节电流,我选用的led的最大电流为20mA,所以我使用330Ω的电阻,使其电流为10mA,不会超过电流限制。
关键词:
相关阅读
-
06-02
-
06-02
-
06-02
推荐阅读
-
-
基于STM32单片机通过GPIO输出点亮LED灯-环球新要闻
基于STM32单片机通过GPIO输出点亮LED灯-STM32单片机和51单片机不同,51更多
2023-06-02 13:23:06
-
-
供应极为宽松 菜油维持偏弱走势-环球快资讯
受大宗商品熊市和自身供需面利空影响,5月中旬后,郑州菜油期货持续下更多
2023-06-02 11:59:48
-
-
怎么增加性功能(如何提高性能力)
怎么增加性功能,如何提高性能力这个很多人还不知道,现在让我们一起来更多
2023-06-02 12:10:29
-
-
准备“芒”起来!2023年百色芒果开采上市时间定了
吃货狂喜!百色芒果要来了最早6月5日开采上市!5月30日百色市政府发更多
2023-06-02 11:17:25
-
-
建信消费金融获批开业
【深圳商报讯】(首席记者谢惠茜)5月31日,建设银行发布公告,称近日更多
2023-06-02 10:41:58
-
-
世界热点!保变电气(600550)6月1日主力资金净卖
截至2023年6月1日收盘保变电气600550报收于514元下跌172换手率046成交更多
2023-06-02 09:36:12
-
-
印度一季度GDP增6.1%,多方称“意外” 全球报道
【环球时报驻巴基斯坦特派记者 程是颉】据印度《经济时报》报道更多
2023-06-02 08:57:11
-
-
原材料价格回落缓解成本压力 轮胎行业利润修复景
卓创资讯根据轮胎原材料占比构成估算,截至5月23日,单条全钢轮胎(12R2更多
2023-06-02 07:59:36
科技热图
热门标签
基于STM32单片机通过G...
供应极为宽松 菜油维...
怎么增加性功能(如何...
准备“芒”起来!2023...
建信消费金融获批开业
世界热点!保变电气(...
印度一季度GDP增6.1%...
原材料价格回落缓解成...
热门中概股普涨百度涨...
新华指数|钢“财”说...
内存卡照片被删了如何...
怎么用无线网卡上网有...
如何安装.sys驱动文件...
UC浏览器离线下载如何...
电脑处于脱机状态怎么...
mds文件用什么打开?...
super amoled和amole...
Win7运行Windows Def...
电脑上怎么进行本地网...
句号在WORD文档上面怎...
精彩放送
-
06-02
-
06-02
-
06-02
-
06-02
-
06-02
-
06-02
-
06-02
-
06-02
-
06-02
-
06-02
-
今日必看
-
精彩话题
-
最新见闻
- 基于STM32单片机通过GPIO输出点亮LED灯-环球新要闻
- 75岁施瓦辛格健身照po出:肱肌胸肌依旧健硕 焦点消息
- 【世界热闻】曝微软早就知道《红霞岛》质量拉胯 但无动于衷
- 穿婚纱看演唱会系盗图造谣 孙吧新热搜的动态图
- 河南上蔡:抓住晴好天气抢收小麦 要闻速递
- 新能源车渗透率节节攀升 哪吒S强解“颠覆密码”
- 供应极为宽松 菜油维持偏弱走势-环球快资讯
- 《蜘蛛侠2》彼得会共生体成瘾 并影响身边的人_今日报
- 环球微速讯:吉田P再谈《最终幻想16》剧情:希望所有人都能享受
- 亚洲最大火电二氧化碳捕集利用封存项目今日投产 焦点短讯
- 怎么增加性功能(如何提高性能力)
- 环球观察:挑战世界第一 中国“小花”王欣瑜轻松面对
- 准备“芒”起来!2023年百色芒果开采上市时间定了→-天天短讯
- 曝阿尔帕西诺让女友做DNA检测 自认无法让人怀孕|独家
- 曝《GTA6》将前往古巴 剧情上或有时间跳跃
- 激动溢出屏幕!太空会师2.0高清纯享版
- 【焦点热闻】江特电机6月2日盘中涨幅达5%
- 时链科技:以1GW可调空调负荷,赋能虚拟电厂智能调峰
- 建信消费金融获批开业
- 秀才何岳文言文翻译及答案-秀才何岳文言文翻译