【STM32】1-LED 使用GPIO点灯

发布者:GHR2596最新更新时间:2022-04-27 来源: eefocus关键字:STM32  LED  GPIO点灯 手机看文章 扫描二维码
随时随地手机看文章

前言

本文用于记录学习过程,因个人水平有限,如有错误还请批评指正。


一、目的

使用STM32进行点灯实验


二、使用器材

1、keil 5


2、Proteus


三、Proteus仿真电路

元件包含:


1、STM32F103R6


2、LED-BIRG


3、POWER


4、RES(电阻)


四、keil 5操作

1、芯片选择

2、新建工程的勾选

3、添加main.c文件

五、main.c中的代码

#include "stm32f10x.h"

void delay_ms(int32_t ms);//延时函数声明

int main()

{

uint8_t k;//LED亮灭计数

  /*LED初始化*/

    GPIO_InitTypeDef  GPIO_InitStructure;//定义GPIO初始化结构体

RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA,ENABLE);//打开GPIOA时钟

GPIO_InitStructure.GPIO_Pin = GPIO_Pin_2;//选择输出引脚  

GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; //推挽输出

GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;//设置IO翻转速度

GPIO_Init(GPIOA, &GPIO_InitStructure);//完成PA2设置

GPIO_ResetBits(GPIOA,GPIO_Pin_2);//熄灭LED

  /*完成初始化,LED快闪5次*/

  for(k=0;k<5;k++)

{

GPIO_SetBits(GPIOA,GPIO_Pin_2);

delay_ms(100);

GPIO_ResetBits(GPIOA,GPIO_Pin_2);delay_ms(100);

}

/*正常运行,LED慢闪*/

while(1)

{

GPIO_SetBits(GPIOA,GPIO_Pin_2);//LED亮

delay_ms(200);

GPIO_ResetBits(GPIOA,GPIO_Pin_2);//LED灭

delay_ms(200);

}

}

/*延时函数*/

void delay_ms(int32_t ms)

{ int32_t i;

while(ms--)

{

i=7500;//开发板晶振8MHz时的经验值4

while(i--);

}

}

六、代码解析 

GPIO_InitTypeDef


该结构体内容


typedef struct

{

  uint16_t GPIO_Pin;             /*!< Specifies the GPIO pins to be configured.

                                      This parameter can be any value of @ref GPIO_pins_define */

 

  GPIOSpeed_TypeDef GPIO_Speed;  /*!< Specifies the speed for the selected pins.

                                      This parameter can be a value of @ref GPIOSpeed_TypeDef */

 

  GPIOMode_TypeDef GPIO_Mode;    /*!< Specifies the operating mode for the selected pins.

                                      This parameter can be a value of @ref GPIOMode_TypeDef */

}GPIO_InitTypeDef;

GPIO_Pin 为引脚选择


GPIO_PinSpeed为翻转速度选择


 GPIOSpeed_TypeDef 内容


typedef enum

  GPIO_Speed_10MHz = 1,//默认为10MHZ

  GPIO_Speed_2MHz, 

  GPIO_Speed_50MHz

}GPIOSpeed_TypeDef;

GPIO_Mode为模式选择


 GPIOMode_TypeDef 内容


typedef enum

{ GPIO_Mode_AIN = 0x0,//模拟输入

  GPIO_Mode_IN_FLOATING = 0x04,//浮空输入

  GPIO_Mode_IPD = 0x28,//下拉输入

  GPIO_Mode_IPU = 0x48,//上拉输入

  GPIO_Mode_Out_OD = 0x14,//开漏输出

  GPIO_Mode_Out_PP = 0x10,//推挽输出

  GPIO_Mode_AF_OD = 0x1C,//复用开漏输出

  GPIO_Mode_AF_PP = 0x18//复用推挽输出

}GPIOMode_TypeDef;

RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA,ENABLE);为打开GPIOA时钟


其原型为    


void RCC_APB2PeriphClockCmd(uint32_t RCC_APB2Periph, FunctionalState NewState)

typedef enum {DISABLE = 0, ENABLE = !DISABLE} FunctionalState;

GPIO_Init(GPIOA, &GPIO_InitStructure) ; 完成既定设置


原型:


void GPIO_Init(GPIO_TypeDef* GPIOx, GPIO_InitTypeDef* GPIO_InitStruct)

GPIO_SetBits(GPIOA,GPIO_Pin_2); 将PA2置1


原型:


void GPIO_SetBits(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin)

GPIO_ResetBits(GPIOA,GPIO_Pin_2): 为将PA2置0


原型:


void GPIO_ResetBits(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin)

七、仿真现象

快闪5次,之后慢闪

关键字:STM32  LED  GPIO点灯 引用地址:【STM32】1-LED 使用GPIO点灯

上一篇:【STM32】4-SysTick系统定时器实验
下一篇:STM32 掉电检测程序

推荐阅读最新更新时间:2024-11-13 12:14

stm32 RS485 SP3485
RS485 是半双工通信(2 线制) SP3485芯片的DE与RE短接在一起连接在STM32F1芯片的PG3上,通过PG3管脚就可以控制 SP3485的收发,当PG3=0时,为接收模式,当PG3=1时,为发送模式 void USART2_IRQHandler() { u8 r; if(USART_GetITStatus(USART2, USART_IT_RXNE) == SET) { r = USART_ReceiveData(USART2); rs485 = 1; //使能发送 delay_ms(1); USART_SendData(USART2, r
[单片机]
<font color='red'>stm32</font> RS485 SP3485
STM32-SPI的NSS详解
区分开内部NSS和NSS外部引脚的区别,内部NSS的电平状态决定了设备的主从模式,内部NSS状态可以由NSS外部引脚控制,也可以由控制寄存器的SSI位控制。 内部NSS决定了主模式还是从模式,它可以通过设置SSM位选择硬件管理或是软件管理,如下图。 NSS外部引脚,主要作为输入引脚。如果是硬件管理(SSM=0),则当NSS引脚为低电平的时候,NSS状态为从模式,否则为主模式;如果是软件管理(SSM=1),内部NSS则由SSI位决定,STM设置NSS引脚的软件管理是为了可以将NSS引脚空出来,像普通IO引脚运用。 外部NSS引脚可以作为主设备的输出引脚(SSOE=1),此时主设备拉低外部NSS引脚,使其连接上的硬件模式(
[单片机]
STM32-SPI的NSS详解
基于STM32神舟系列开发板的读取绝对式编码器源码
#include stm32f10x.h #include stm32f10x_usart.h #include #include #include #define CMD_BUFFER_LEN 100 GPIO_InitTypeDef GPIO_InitStructure; void Delay(__IO uint32_t nCount) { for(; nCount != 0; nCount--); } void RCC_Config(void) { RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE); RCC_APB2PeriphClo
[单片机]
STM32+OLED巧妙显示汉字英文
目标:实现OLED_Print函数,可以在OLED屏幕上显示中英文和符号混合的任意字符串 汉字编码原理 ASCII码显示的原理这里不再说明,一般的OLED例程都有使用方法。下面说一下中文编码的原理。 在keil的环境使用的是GBK或者GB2312的编码方式,GBK编码汉字使用两个字节: 第一个字节为区码,第二个好像叫段码,区码是大于127的,段码不一定。 具体编码方式可以查阅资料: 下面编写一个简单的程序进行验证: int main(void) { char *s = 哈h ; int i; delay_init(); //延时函数初始化 NVIC_Configurat
[单片机]
STM32+OLED巧妙显示汉字英文
STM32标准库编程之LED闪烁
【1】工程截图 【2】代码解读 有了前面文章的基础,工程建立我不再赘述,我们来看主函数所在的源文件(这里完全可以把开头的宏定义和函数声明放到同名的头文件中)。 这里我只引用了delay.h和sys.h 可以看到这三个文件放到一个文件夹里,说明他们三个比较特殊,这里就详细介绍一下(辅助编程文件夹里的开发指南里说的很详细)。SYSTEM 文件夹下包含了 delay、 sys、 usart 等三个文件夹。分别包含了 delay.c、 sys.c、 usart.c及其头文件。通过这 3 个 c 文件,可以快速的给任何一款 STM32F1 构建最基本的框架。使用起来是很方便的。 delay 延时的编程思想: CM3 内核的处理
[单片机]
<font color='red'>STM32</font>标准库编程之<font color='red'>LED</font>闪烁
STM32软件复位办法
在需要软件复位的地方添加如下两句代码: 1 2 __set_FAULTMASK(1); NVIC_SystemReset();
[单片机]
STM32 驱动无线NRF24L01 完成串口数据传输
2401 一个简单的SPI 接口的 2.4G 射频模块 淘宝价20¥,DIY 的17¥ ,算是廉价。 这个版本的稳定修正 http://ntn314.blog.163.com/blog/static/16174358420106211118944/ 接口CMOS电平3.3V STM32 可直接连接。接受完成 发送完成 出错 都有IRQ 低电平中断产生。程序中 我将其连接至一IO口在外部中断中处里各类事件 但也发现这种处理方式并不是特别灵活,或许直接判断更加灵活。 NRF20L01一次可以传输 1~32个字节比较灵活。最初我是根据字符串长来不停的转换每次传输的长度,这样做十分麻烦最后用截取有效串长的方法实现效果很好。
[单片机]
<font color='red'>STM32</font> 驱动无线NRF24L01 完成串口数据传输
开关电源中LED显示屏的设计与研究
研究概述 LED用开关电源属于电网电源供电的、额定电压不超过600V的单路输出式交流-直流外部电源,而室外用的LED开关电源比室内用的环境更严酷,所以选室外用的LED开关电源作为研究的重点,更具代表性。 LED显示屏的研究采用屏幕为8×8的点阵显示,侧重于动态处理方法,由于显示屏幕的局限性,在此次的研究设计中只能显示英文和数字。一个基本的LED屏幕由8行×8列点共64个LED组成,显示屏有共阴和共阳两种连接方式。 设计思路 对由8×8点阵构成的LED显示屏而言,一般数据端连接微处理器的8位并行数据口,而选通端则逐一使能(选通),选择需要点亮的某一列,通过分时复用方式实现动态显示效果。选通方式一般有两种:独立选通和译码选通。 如果屏
[电源管理]
开关电源中<font color='red'>LED</font>显示屏的设计与研究
小广播
设计资源 培训 开发板 精华推荐

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

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

换一换 更多 相关热搜器件

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

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