历史上的今天

今天是:2024年08月31日(星期六)

2020年08月31日 | STM32——利用STM32CubeMX来点亮GPIO口的led

发布者:未来感知 来源: eefocus关键字:STM32  STM32CubeMX  GPIO口  led 手机看文章 扫描二维码
随时随地手机看文章

GPIO口的 LED 点亮(以STM32F407IGTb芯片为例 )

1、掌握的GPIO口的使用方法


2、熟悉Keil uVision5工具软件的使用


原理:

只要是对硬件操作,就要首先查看原理图。

查看外设是给模块的MCU的哪个引脚相连。

FS-STM32F407开发平台上的LED的亮灭状态,与芯片上的引脚I/O输出电平有关。

FS-STM32F407开发平台上LED的I/O扩展:

在这里插入图片描述

IO操作重要结构体:GPIO_InitTypeDef


typedef struct

{

    uint32_t Pin;               操作的管脚

uint32_t Mode;    模式选择

uint32_t Pull;      上拉下拉,或者都不加

uint32_t Speed;    速度选择

uint32_t Alternate; 管脚复用模式

} GPIO_InitTypeDef;

 

1、Mode


输入(复位状态)/input(reset state)

通用输出模式 / general purpose output mode

复用功能模式 / alternate function mode

模拟模式 / analog mode

 #define  GPIO_MODE_INPUT       ((uint32_t)0x00000000)   /*!< Input Floating Mode */

 #define  GPIO_MODE_OUTPUT_PP  ((uint32_t)0x00000001)   /*!< Output Push Pull Mode*/

 #define  GPIO_MODE_OUTPUT_OD   ((uint32_t)0x00000011)   /*!< Output Open Drain Mode*/

 #define  GPIO_MODE_AF_PP    ((uint32_t)0x00000002)   /*!< Alternate Function Push Pull Mode*/

 #define  GPIO_MODE_AF_OD    ((uint32_t)0x00000012)   /*!< Alternate Function Open Drain Mode*/

 

2、Speed


为了降低STM32处理器的功耗,可以依据实际的需求,选择合适的时钟速率,GPIO口支持的最大时钟速率越低,它产生的功耗也越低。


#define  GPIO_SPEED_LOW                           GPIO_SPEED_FREQ_LOW

#define  GPIO_SPEED_MEDIUM                        GPIO_SPEED_FREQ_MEDIUM

#define  GPIO_SPEED_FAST                          GPIO_SPEED_FREQ_HIGH

#define  GPIO_SPEED_HIGH                          GPIO_SPEED_FREQ_VERY_HIGH

 

3、初始化GPIO的代码


void MX_GPIO_Init(void)

{

  GPIO_InitTypeDef GPIO_InitStruct;

 

  __HAL_RCC_GPIOF_CLK_ENABLE();


  GPIO_InitStruct.Pin = GPIO_PIN_6|GPIO_PIN_7|GPIO_PIN_8|GPIO_PIN_9  |GPIO_PIN_10;

  GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;

  GPIO_InitStruct.Pull = GPIO_NOPULL;

  GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;

  HAL_GPIO_Init(GPIOF, &GPIO_InitStruct);

  HAL_GPIO_WritePin(GPIOF,GPIO_PIN_7|GPIO_PIN_8|GPIO_PIN_9|GPIO_PIN_10, GPIO_PIN_SET);

}

 

调用的HAL函数解析: void HAL_GPIO_WritePin(GPIO_TypeDef* GPIOx , uint16_t GPIO_Pin, GPIO_PinState PinState);

该函数其实是对BSRR 寄存器进行操作,第一个参数传的是GPIO所在的组,第二个是操作第几个管脚,第三个是对管脚进行置位。


利用STM32CubeMX来架构程序

1、打开STM32CubeMX选择芯片

在这里插入图片描述

2、对管脚进行配置

在这里插入图片描述

3、点击CONFIGURATION

在这里插入图片描述

4、点击生成工程按钮

在这里插入图片描述

源代码:

(仅需要用户添加的代码)


/* USER CODE BEGIN 0 */

#define led1_port GPIOF

#define led1_pin GPIO_PIN_7

#define led2_port GPIOF

#define led2_pin GPIO_PIN_8

#define led3_port GPIOF

#define led3_pin GPIO_PIN_9

#define led4_port GPIOF

#define led4_pin GPIO_PIN_10


#define set_high(p,i) {p->BSRR = i;}     //给高电平 熄灭

#define set_low(p,i) {p->BSRR = (uint32_t)i << 16U;} //给低电平 点亮


#define led1_off set_high(led1_port,led1_pin)

#define led1_no set_low(led1_port,led1_pin)

#define led2_off set_high(led2_port,led2_pin)

#define led2_no set_low(led2_port,led2_pin)

#define led3_off set_high(led3_port,led3_pin)

#define led3_no set_low(led3_port,led3_pin)

#define led4_off set_high(led4_port,led4_pin)

#define led4_no set_low(led4_port,led4_pin)


void led_1234(void);

/* USER CODE END 0 */

.

.

.

/* USER CODE BEGIN 3 */

led_1234();--------------------main函数中调用

  /* USER CODE END 3 */

  .

  .

  .

/* USER CODE BEGIN 4 */

void led_1234(void)

{

led1_no; //led1打开

HAL_Delay(1000); //延时1秒

led1_off; //led1关闭

HAL_Delay(1000); //延时1秒


led2_no; //led2打开

HAL_Delay(1000); //延时1秒

led2_off; //led2关闭

HAL_Delay(1000); //延时1秒

led3_no; //led3打开

HAL_Delay(1000); //延时1秒

led3_off; //led3关闭

HAL_Delay(1000); //延时1秒


led4_no; //led4打开

HAL_Delay(1000); //延时1秒

led4_off; //led4关闭

HAL_Delay(1000); //延时1秒

}

/* USER CODE END 4 */

 

编程要点:

1.使能GPIO端口时钟

2.初始化GPIO目标引脚为推挽输出

3.控制GPIO引脚输出高低电平

关键字:STM32  STM32CubeMX  GPIO口  led 引用地址:STM32——利用STM32CubeMX来点亮GPIO口的led

上一篇:STM32-点亮LED灯(GPIO配置)
下一篇:STM32——FlagStatus与ITStatus

推荐阅读

近几年,人脸识别技术在安防领域得到了广泛应用,随着技术的不断发展,它离我们的日常生活越来越近,手机、商场、公园等都可以看到它的身影。据相关分析报告显示,预计今年起人脸识别市场规模将保持20%左右的增速,到2022年,全球人脸识别市场规模将达75.95亿美元。可以说,未来几年将是人脸识别技术成熟与普及的关键之年。孩子下河耍先过“刷脸”关据资料...
  跨越1300公里,从江南水乡到西北塞外,太阳能路灯和巨型的输变电网不断从窗外闪过,提醒我古老的敦煌在新时代焕发着更加夺目的光彩。 自2009年以来,首批光伏特许权项目在敦煌荒凉的戈壁滩上落成,太阳能光伏这种极为充沛而独特的资源逐渐走入大众视野,一再打破长期以来内陆戈壁在人们心中“荒凉、干枯、死亡”的形象。  这次入塞,我把目的地定在...
高可靠性机电开关制造商 C&K 推出了一个防水超小型静噪微动开关系列, 可以为汽车应用实现精密起动。紧凑式 ZMW 系列微动开关结合了长行程和超过 2mm 的行程, 实现可靠的操作。ZMW 系列开关可以在汽车、工业、白色家电等条件恶劣的环境中使用。 ZMW 系列开关采用双滑动触点设计, 可以防止污染物进入开关中, 以免影响开关性能和使用寿命。双滑动触点设计保证...
上周市场几度传出台积电即将全线涨价,从最初的明年成熟制程上涨15%至20%、先进制程涨幅达10%。台媒《中央社》最新报道指出,业内人士认为,台积电调涨晶圆代工价格,半导体设备及硅晶圆厂商将受惠,IC设计厂将面临成本增高的压力。业内人士认为,台积电调涨价格,将有助于缓解该厂商的扩产压力。与此同时,硅晶圆厂环球晶、台胜科及半导体设备厂帆宣、京...

史海拾趣

问答坊 | AI 解惑

安防监控

深圳市鑫达莱科技有限公司网络工程部是由在台湾著名的CCTV 厂商杰士安(JSA-CCTV)电子股份和鑫达莱公司注资支持下而成立的智能化系统集成公司, 是一家专业提供视频监控系统、防盗报警系统、停车场系统、网络工程等智能化系统集成为一体的高科技企业 ...…

查看全部问答∨

会跳舞的机械电子时钟Segmentus Clock,太酷了

这是由Art Lebedev Studio设计的一款看似简直但并不简略的机械时钟Segmentus Clock,钟体的表面为一层半透明材料,用户可以透过这层半透明材料看到里面时钟的运作,它的显示模式和电子时钟的显示雷同,但是当它每分每秒走动的时候连接数字的每一个 ...…

查看全部问答∨

如何选用热继电器、?实际为电机额定电流多少

选用热继电器一般以电机额定电流为准.如电机额定电流为3A,而选择热继电器为1.5~3.5间.设定时以电机的负载为准.如负载比较稳定时,热继电器设定的电流为电机额定电流.如负载波动比较大时可稍微加大些. 如果是电机直接启动开关设备热继电器电流应选 ...…

查看全部问答∨

UCF文件中时序约束的语法

约束UCF文件,从Constrains Editor直接输入是最方便、最直接的添加约束的方法了。我总结了以下几种常用的语法: 2 \\- i: T  u/ Q! k2 u\" T2 v* r; H\" M$ `\" A6 Q7 s4 x1)周期约束 ; n, M$ i6 B! t: {约束是一个基本时序和综合约束, ...…

查看全部问答∨

有没有准备去参加嵌入式培训的?(上海)

http://www.farsight.com.cn/ 有个嵌入式培训,4个月。在上海 10.19日开班。我现在准备去 因为合伙报名有优惠5%的优惠,所以问一下有没有同去。绝对不是帮做广告!!因为我确实准备去打算。 如果有去的,就联系一下,一起去报名。QQ346212241. ...…

查看全部问答∨

WinCE中List控件问题,急!

环境:WinCE 4.2 EVC开发 Dialog对话框,其中用了一个List Control控件 设置为了表格形式, 但是在设置字体时,无法正常完成,具体表现如下:         CFont ft;         LOGFONT lf;   &nbs ...…

查看全部问答∨

问个WINCE调试的基本方法问题

我在PB5.0中调试单一的工程可以么?就是我不想每次都生成新的系统镜像。就像在VS2005中调试一样,修改代码、F5就开始编译链接、部署、断点,这样就方便多了阿,要不我不是在PB中每次都得从新生成系统镜像了?多麻烦…

查看全部问答∨

急需人员加盟

本公司因业务需要,急需招聘WincE开发工程师,待遇从优。有意者请将简历发送至liuyh0105@126.com刘月红收。有IC卡、条形码行业工作经验者优先。电话:010-51265035、68219720、68219760…

查看全部问答∨

STM8S103K使用I2C通信经常出错

103K作为从属, 另外一块CPU作为主控, 时钟频率大概200HZ 在103K这边经常会收到错误的地址 但使用逻辑分析仪看波形是正确的 可能是哪里出错了呢?…

查看全部问答∨
小广播
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
随便看看

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

电子工程世界版权所有 京ICP证060456号 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved