完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
原理:
注意:这里使用迷你版,其他版本IO口设置不同,详细请查询原理图 由图可知:LED0是PA8,LED1是PD2,且都是共阳极,高电平灭,低电平亮 所以只需要控制这两个IO口的电平就能实现LED灯的闪烁了。 GPIO口设置前要先进行时钟的使能!!! (外设,包括GPIO使用前都要先使能相应的时钟!!) 同时设置为推挽输出(可以准确输出高低电平) 还要设置输出速度。 由于STM32都是使用相应的底层,所以要记住以下几个函数: 1个初始化函数 void GPIO_Init(GPIO_TypeDef* GPIOx, GPIO_InitTypeDef* GPIO_InitStruct); 2个读取输入电平函数 uint8_t GPIO_ReadInputDataBit(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin); uint16_t GPIO_ReadInputData(GPIO_TypeDef* GPIOx); 2个读取输出电平函数 uint8_t GPIO_ReadOutputDataBit(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin); uint16_t GPIO_ReadOutputData(GPIO_TypeDef* GPIOx); 4个设置输出电平函数 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); 主要代码: main.c ****************************************************************************** * 文件名:LED灯 * 描 述:L1,L2每隔500ms闪烁一次 * 作 者:思索与猫 * 日 期: 19/4/1 * 备 注: * ****************************************************************************** #include "stm32f10x.h" // Device header #include "led.h" #include "delay.h" int main() { delay_init(); //延时函数初始化 LED_Init(); //LED灯初始化 while(1) { GPIO_SetBits(GPIOA,GPIO_Pin_8); //PA8,PD2高电平,L0,L1灭 GPIO_SetBits(GPIOD,GPIO_Pin_2); //下方代码为更简单的对位操作IO口,实现LED灯亮灭 // PAout(8) = 1; // PDout(2) = 1; delay_ms(500); //延时500ms GPIO_ResetBits(GPIOA,GPIO_Pin_8); //PA8,PD2低电平,L0,L1亮 GPIO_ResetBits(GPIOD,GPIO_Pin_2); // PAout(8) = 0; // PDout(2) = 0; delay_ms(500); } } led.h #ifndef __LED_H #define __LED_H void LED_Init(void); #endif led.c #include #include void LED_Init() { GPIO_InitTypeDef GPIO_InitStructure; //定义一个结构体 RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA|RCC_APB2Periph_GPIOD,ENABLE); //PA,PD时钟使能,这里使用了或运算 //定义PA8 GPIO口设置 GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; //推挽输出 GPIO_InitStructure.GPIO_Pin = GPIO_Pin_8; //设置引脚 GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; //设置输出速度 GPIO_Init(GPIOA,&GPIO_InitStructure); //初始化GPIO口 GPIO_SetBits(GPIOA,GPIO_Pin_8); //PA8输出高电平,L0灭 //定义PD2 GPIO口设置 GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; //推挽输出 GPIO_InitStructure.GPIO_Pin = GPIO_Pin_2; //设置引脚 GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; //设置输出速度 GPIO_Init(GPIOD,&GPIO_InitStructure); //初始化GPIO口 GPIO_SetBits(GPIOD,GPIO_Pin_2); //PD2输出高电平,L1灭 } |
|
|
|
|
|
|
|
只有小组成员才能发言,加入小组>>
调试STM32H750的FMC总线读写PSRAM遇到的问题求解?
1090 浏览 1 评论
X-NUCLEO-IHM08M1板文档中输出电流为15Arms,15Arms是怎么得出来的呢?
1107 浏览 1 评论
545 浏览 2 评论
STM32F030F4 HSI时钟温度测试过不去是怎么回事?
412 浏览 2 评论
ST25R3916能否对ISO15693的标签芯片进行分区域写密码?
990 浏览 2 评论
1593浏览 9评论
STM32仿真器是选择ST-LINK还是选择J-LINK?各有什么优势啊?
262浏览 4评论
STM32F0_TIM2输出pwm2后OLED变暗或者系统重启是怎么回事?
274浏览 3评论
245浏览 3评论
stm32cubemx生成mdk-arm v4项目文件无法打开是什么原因导致的?
238浏览 3评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-8-16 08:56 , Processed in 0.858542 second(s), Total 79, Slave 63 queries .
Powered by 电子发烧友网
© 2015 www.ws-dc.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号