历史上的今天
返回首页

历史上的今天

今天是:2025年08月12日(星期二)

正在发生

2018年08月12日 | STM32F051C8T6控制LED

2018-08-12 来源:eefocus

一、概述

不管什么单片机,想要控制LED灯,只能是通过控制单片机芯片的I/O引脚电平的高低来实现。
同样在ST单片机上,I/O引脚可以被软件设置成各种不同的功能,如输入或输出,所以被称为 GPIO (General-purpose I/O)。
而GPIO引脚又被分为GPIOA、GPIOB„„GPIOG不同的组,每组端口分为 0~15,共16个不同的引脚不等,
对于不同型号的芯片,端口的组和引脚的数量不尽相同,具体请参考相应ST单片机芯片型号的datasheet。 


根据ST单片机的GPIO特点,控制LED灯的步骤如下: 
1.在众多 GPIO端口引脚中选定需要控制的特定引脚[与LED相连的控制引脚] 
2.根据外设配置GPIO需要的特定功能 
3.通过设置 GPIO输出电压的高低控制LED的亮和灭


二、硬件电路图



三、需要用到的库函数




四、应用程序设计

main.c

/*********************************************************

*平台:MDKARM 5.14

*主控:STM32F051C8T6

**********************************************************/

#include "stm32f0xx.h"

#include "led.h"

#include "delay.h"

 

int main (void)

{

Delay_Init(48);     //延时函数初始化

LED_Init();          //LED初始化

    

while (1)

{

LED_Not(0);

Delay_ms( 500 ); //控制闪烁速度

}

}

led.c

#include "led.h"

 

//LED控制端口初始化

void LED_Init(void)

{

GPIO_InitTypeDef GPIO_InitStructure;    

RCC_AHBPeriphClockCmd(RCC_AHBPeriph_GPIOB, ENABLE);     //开启CPIOB时钟 

GPIO_InitStructure.GPIO_Pin=GPIO_Pin_15 | GPIO_Pin_14 | GPIO_Pin_13 | GPIO_Pin_12;  //选择控制引脚

GPIO_InitStructure.GPIO_Mode=GPIO_Mode_OUT;     //设置为输出模式

GPIO_InitStructure.GPIO_OType=GPIO_OType_PP;    //设置为推挽方式

GPIO_InitStructure.GPIO_Speed=GPIO_Speed_Level_3; //设置引脚速度为高速

GPIO_InitStructure.GPIO_PuPd=GPIO_PuPd_NOPULL;  //设置引脚为没有上下拉

GPIO_Init(GPIOB,&GPIO_InitStructure);   //初始化函数

//初始化LED关闭

GPIO_ResetBits(GPIOB, GPIO_Pin_15 | GPIO_Pin_14 | GPIO_Pin_13 | GPIO_Pin_12);

 

 

 

}

 

void LED_Not(int n)

{

switch(n)

{

    //对引脚电平取反

case 0: GPIO_WriteBit(GPIOB, GPIO_Pin_15,(BitAction)(1-(GPIO_ReadOutputDataBit(GPIOB, GPIO_Pin_15))));

break;

case 1: GPIO_WriteBit(GPIOB, GPIO_Pin_14,(BitAction)(1-(GPIO_ReadOutputDataBit(GPIOB, GPIO_Pin_14))));

break;

case 2: GPIO_WriteBit(GPIOB, GPIO_Pin_13,(BitAction)(1-(GPIO_ReadOutputDataBit(GPIOB, GPIO_Pin_13))));

break;

case 3:  GPIO_WriteBit(GPIOB, GPIO_Pin_12,(BitAction)(1-(GPIO_ReadOutputDataBit(GPIOB, GPIO_Pin_12))));

break;

default: break;

}

}


这样编译下载后就能看到LED一闪一闪的


推荐阅读

史海拾趣

全志(Allwinner)公司的发展小趣事

全志科技的起源可以追溯到赵广民创立炬力公司的时期。作为“MP3之父”,赵广民带领炬力在短短几年内实现了MP3芯片出货量的突破,年销售额和净利润均取得了惊人的增长。然而,炬力的股权结构问题最终导致了赵广民的离职。他随后创建了全胜微电子有限公司,并在不久后遭遇不幸去世。但赵广民的创业精神和市场洞察力为全志科技的诞生奠定了坚实的基础。

巴丁微公司的发展小趣事

近年来,巴丁微在电子行业的发展取得了显著成就。在近千家参评企业中,巴丁微脱颖而出,成功入选2023粤港澳大湾区科创榜专精特新标杆企业TOP100榜单。这一荣誉的获得,不仅是对巴丁微技术实力和产品质量的认可,也反映了公司在行业内的领先地位和影响力。

这一荣誉的取得,为巴丁微未来的发展奠定了坚实的基础。公司将继续秉承创新引领、协同发展的理念,不断提升技术水平和产品质量,为电子行业的发展贡献更多力量。

Dantona Industries公司的发展小趣事

作为一家有社会责任感的企业,Dantona Industries始终关注环境保护和社会公益。他们积极推广绿色生产理念,采用环保材料和生产工艺,减少对环境的影响。同时,公司还积极参与社会公益活动,为贫困地区的教育、医疗等事业提供援助。这些举措不仅展现了公司的社会担当精神,也为公司赢得了良好的社会声誉和品牌形象。

力芯微(ETEK)公司的发展小趣事

随着下游电子产品的更新换代和手机的快速普及,力芯微公司敏锐地捕捉到了这一市场机遇。公司及时调整研发方向,推出一系列低压低功耗的电源类产品,成功进入手机市场。这一转型不仅使公司实现了业务的多元化,也为公司带来了新的增长点。

ADL [ADL Embedded Solutions Inc]公司的发展小趣事

力芯微公司在数字信号处理器领域拥有丰富的经验和深厚的技术积累,是行业内领先的企业之一。公司拥有一支高素质的研发团队,不断推进技术创新和产品升级。通过持续的研发投入和技术创新,力芯微在数字信号处理器领域保持了领先地位,并赢得了客户的广泛认可。

CONEXANT公司的发展小趣事

在无线通信技术快速发展的时代,Conexant公司积极寻求与业界领先企业的合作机会。2001年,Conexant宣布将其无线业务部门与Alpha Industries合并,共同创建一个价值约30亿美元的新企业。这一合并不仅扩大了Conexant在无线通信领域的市场份额,也为其带来了更多的技术资源和市场机会。合并后的新企业以Conexant为主导,通过整合双方的优势资源,实现了无线业务的快速发展和市场份额的稳步提升。

问答坊 | AI 解惑

英飞凌MP-E多媒体平台获选LG系列手机

本帖最后由 jameswangsynnex 于 2015-3-3 20:00 编辑 …

查看全部问答>

数据通信网络概

中信的一个PPT文件,简单介绍了下数据网络通信…

查看全部问答>

LM3S 系列单片机休眠与深度休眠应用笔记(一)

LM3S 系列单片机休眠与深度休眠应用笔记 1    处理器的3 种模式   Contex-M3 处理器除支持正常运行模式外,还支持睡眠模式和深度睡眠模式,用来实现低功耗。 处理器在运行模式中控制器积极执行代码;睡眠模式中器件的时钟 ...…

查看全部问答>

关于TFT的问题

It can support 1-bit per pixel, 2-bit per pixel, 4-bit per pixel, and 8-bit per pixel for interfacing with the palletized TFT color LCD panel, and 16-bit per pixel and 24-bit per pixel for non-palletized true-color display. 请问 ...…

查看全部问答>

wince 6.0 中断问题

wince 6.0 pxa270 请帮忙看下下面的这个中断,按键的中断,GPIO101和GPIO104。其中101为中断线,104为高电平。 总是默认产生一个中断,用电表去测,发现101为低,104为高。 再按下按键的时候也不会产生中断。 请高手帮忙看一下啊。是不是这段 ...…

查看全部问答>

2010年三月江苏三级偏硬考试

   今天刚考的江苏三级偏硬,微机原理这学期还没学。。。连猜带蒙终于把所有都填满了。。。 测一下人品。。。哈哈。。。    有哪位仁兄知道答案的,请教一下,谢谢。。。…

查看全部问答>

求问 wince下开发camera 应用

我要在camera中支持闪光灯 这怎么开发呢? 这个有接口么?  或者搜索这个开发的关键词是什么呢? 谢谢…

查看全部问答>

USB 状态

在USB 插入设备后, 我想通过应用来决定是否  [PC识别, 充电] 1. 当用户选择 PC 识别时, NAND 和 SD 卡都可以被PC 识别 2. 当用户选择 充电式, NAND 和 SD 不被PC 识别, USB就是充电的功能 现在的情况是这样: b.当USB 插入时: 进 ...…

查看全部问答>

发电机组电压和频率的稳态调整率测量方法

发电机组的输出电压与发电机组中的转速及励磁电流有关,而转速又决定了输出交流电的频率,只有在决定了频率的情况下,再测量其输出电压的额定值,即先进行满载时调整交流电频率为额定值(50Hz),然后去掉负载(为空载)测量其输出电压为整定(40 ...…

查看全部问答>

MSP430F2232时钟频率问题

MSP430F2232外接晶振,在第5、6脚32.768KH 的晶振可以测试出波形,换用16MH的晶振就测试不出波形。不知为什么?…

查看全部问答>