硬件连接
参考原理图,会看原理图,使用搜索功能[A1] ,知道标号作用[A2] ,流水灯原理[A3] 。
战舰版本 LED0=PB5 LED1=PE5
迷你版本 LED0=PA8 LED1=PD2
RCT6版本 LED1=PA7 LED2=PA6 LED3=PA5 LED4=PA4
GPIO库函数
初始化函数 1个初始化函数 :
void GPIO_Init(GPIO_TypeDef*GPIOx,GPIO_InitTypedef*GPIO_InitStruct);
两个读取输入电平函数:
uint8_t GPIO_ReadInputDataBit(GPIO_TypeDef*GPIOx,uint16_t GPIO_Pin);
uint16_t GPIO_ReadInputData(GPIO_TypeDef*GPIOx);
两个读取输出电平函数:
uint8_t GPIO_ReadOutputDataBit(GPIO_TypeDef*GPIOx,uint16_t GPIO_Pin);
uint16_t GPIO_ReadOutputData(GPIO_TypeDef*GPIOx);
四个设置输出电平函数:
void GPIO_SetBits(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin);
void GPIO_ResetBits(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin);
void GPIO_WriteBit(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin, BitAction BitVal);
void GPIO_Write(GPIO_TypeDef* GPIOx, uint16_t PortVal);
操作过程
复制或者是新建一个工程模板到一个地方,然后新建一个hardware,并且在复制的工程中也新建一个hardware,然后在hardware里面建立一些子文件夹,并在LED下面建立LED.C和LED.H。
LED.C程序代码书写
#include "led.h"
//初始化 PB5 和 PE5 为输出口.并使能这两个口的时钟
//LED IO 初始化
void LED_Init(void)
{
GPIO_InitTypeDef GPIO_InitStructure;
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB|
RCC_APB2Periph_GPIOE, ENABLE); //使能 PB,PE 端口时钟
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_5; //LED0-->PB.5 推挽输出
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; //推挽输出
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_Init(GPIOB, &GPIO_InitStructure);
GPIO_SetBits(GPIOB,GPIO_Pin_5); //PB.5 输出高
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_5; //LED1-->PE.5 推挽输出
GPIO_Init(GPIOE, &GPIO_InitStructure);
GPIO_SetBits(GPIOE,GPIO_Pin_5);/ /PE.5 输出高
}
该代码里面就包含了一个函数 void LED_Init(void),该函数的功能就是用来实现配置 PB5和 PE5 为推挽输出。 这里需要注意的是: 在配置 STM32 外设的时候,任何时候都要先使能该外设的时钟。 GPIO 是挂载在 APB2 总线上的外设, 在固件库中对挂载在 APB2 总线上的外设时钟使能是通过函数 RCC_APB2PeriphClockCmd()来实现的。
LED.h程序代码书写
#ifndef __LED_H
#define __LED_H
#include "sys.h"
//LED 端口定义
#define LED0 PBout(5)// DS0
#define LED1 PEout(5)// DS1
void LED_Init(void);//初始化
#endif
PS:务必搞清楚GPIO模式,否则这里写不出来函数也看不懂
————————————————
版权声明:本文为CSDN博主「qq_41546863」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/qq_41546863/article/details/95218672
上一篇:stm32入门——跑马灯(基于stm32f103zet6)
下一篇:嵌入式stm32学习之路——第一弹(led流水灯工程)
推荐阅读最新更新时间:2024-11-13 08:34
设计资源 培训 开发板 精华推荐
- 用于最后喘息电路的 LT3007ETS8-1.8 低压差线性稳压器的典型应用电路
- 用于 OLED 照明的 PFC SEPIC(208V@0.110A 非隔离式 LED 灯串)
- 用于双极晶体管的 Tc110501Ect Pfm/Pwm 升压 Dc/Dc 控制器的典型应用
- USB2.0-HUB-1
- 带 HART 的完全隔离、单通道电压和 4 mA 至 20 mA 输出
- LT1619,隔离式 SLIC 反激电源,VIN = 12V,VOUT = 32V 和 65V(最大 20W)
- RDR-242 - 30W电源
- AD8531ARTZ-REEL7 单电源立体声耳机驱动器的典型应用
- LTC3615EFE-1 双通道 4MHz、3A 同步降压型 DC/DC 转换器的典型应用
- ADP166CB-EVALZ,ADP166 WLCSP LDO 线性稳压器评估板