【STM32】点亮LED

举报
AXYZdong 发表于 2022/01/07 22:53:29 2022/01/07
【摘要】 STM32之点亮LED。

Author:AXYZdong
自动化专业 工科男
有一点思考,有一点想法,有一点理性

我用的硬件是STM32F407最小系统板,其实它和F103差别不大,只是它的处理速度要快一点吧。(STM32F1 基础性 主频72M &STM32F4 高性能 主频168M)这个开发板是从某宝上买的,价格也不贵,四五十块钱适合学生党。
贴上图片
image.png

用的是标准库,话不多说直接上代码

1、LED相关配置函数bsp_led.c

 #include "bsp_led.h"
 void LED_GPIO_Config()
 {
 /*开GPIO的时钟*/
 RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOA, ENABLE);  //使能GPIOA时钟
/*定义一个GPIO初始化结构体*/
 GPIO_InitTypeDef GPIO_InitStruct;
 /*配置GPIO初始化结构体的成员*/
 GPIO_InitStruct.GPIO_Pin = GPIO_Pin_6 | GPIO_Pin_7;    //LED0和LED1对应IO口
 GPIO_InitStruct.GPIO_Mode = GPIO_Mode_OUT;             //普通输出模式
 GPIO_InitStruct.GPIO_OType = GPIO_OType_PP;            //推挽输出
 GPIO_InitStruct.GPIO_Speed = GPIO_Low_Speed;           //低频率
 GPIO_InitStruct.GPIO_PuPd = GPIO_PuPd_UP;              //上拉
 /*调用GPIO初始化函数,把配置好的结构体成员的参数写入寄存器*/
 GPIO_Init(GPIOA,&GPIO_InitStruct);                     //GPIO初始化
 GPIO_ResetBits(GPIOA,GPIO_Pin_6 | GPIO_Pin_7);        //PA6和PA7口置低
}

==GPIO可以根据自己的硬件资源自行配置。==

2、与LED相关的头文bsp_led.h

#ifndef _BSP_LED_H
#define _BSP_LED_H
#include "stm32f4xx.h"
void LED_GPIO_Config(void);
#endif

3、主函数main.c

#include "stm32f4xx.h"
#include "bsp_led.h"
void delay(uint32_t count)
{
  for( ;count!=0;count--);
}
main()
{
 LED_GPIO_Config();
 while(1)
 {
   GPIO_ResetBits(GPIOA,GPIO_Pin_6);  
   delay(0x888888);
   GPIO_SetBits(GPIOA,GPIO_Pin_6); 
   GPIO_ResetBits(GPIOA,GPIO_Pin_7);  
   delay(0x888888);
   GPIO_SetBits(GPIOA,GPIO_Pin_7); 
  }
}

这里点亮LED的同时还增加了delay的延时函数,从而产生闪烁的效果。
好啦,代码的主体部分已经展示,至于代码中使用的标准库小伙伴们可自行去官网下载。

参考文献

【1】:《零死角玩转 STM32—基于野火 F407[霸天虎]开发板 》
【2】:郭天祥.新概念51单片机C语言教程:如门、提高、开发、拓展全攻略[M].北京:电子工业出版社,2018.1:66

码字不易,大家的支持就是我坚持下去的动力。点赞后不要忘了关注我哦!

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。