历史上的今天

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

正在发生

2018年08月12日 | STM32F103RCT6控制LED

发布者:真实幻想 来源: eefocus关键字:STM32F103RCT6  控制LED 手机看文章 扫描二维码
随时随地手机看文章

不管什么单片机,想要控制LED灯,只能是通过控制单片机芯片的I/O引脚电平的高低来实现。
同样在ST单片机也一样,在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的亮和灭

电路图



从电路图可以看出低电平LED亮,高电平LED灭


所以我们设置的程序如下:

下面为库函数编程,需要加载如下库文件

main.c


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

*平台:MDKARM 5.14

*主控:STM32F103RCT6

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

#include "stm32f10x.h"

#include "led.h"

 

//延时函数

void Delay(unsigned int t)

{

while(t != 0)

{

t--;

}

}

 

int main (void)

{

LED_Init();

while (1)       //步骤3

{

        LED_Not(0);             //LED亮灭交替闪烁

for (j=0; j<30; j++)

{

Delay(60000);

}

}

}

led.c

#include "led.h"

//LED 端口初始化//步骤2

void LED_Init(void)

{

GPIO_InitTypeDef GPIO_InitStructure;//定义一个GPIO_InitTypeDef类型的结构体

RCC_APB2PeriphClockCmd( RCC_APB2Periph_GPIOC, ENABLE); //开启GPIO的外设时钟

  GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0 | GPIO_Pin_1 | GPIO_Pin_2 | GPIO_Pin_3;//选定控制引脚//步骤1

  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; //设置引脚为通用推挽输出  

  GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; //设置控制引脚的速度

  GPIO_Init(GPIOC, &GPIO_InitStructure);//初始化结构体

GPIO_SetBits(GPIOC, GPIO_Pin_0 | GPIO_Pin_1 | GPIO_Pin_2 | GPIO_Pin_3);//初始化LED灯熄灭

}

//点亮1个LED灯

void LED_On(int n)

{

switch(n)

{

case 0: GPIO_ResetBits(GPIOC,GPIO_Pin_0);       //控制引脚输出低电平

break;

case 1: GPIO_ResetBits(GPIOC,GPIO_Pin_1);

break;

case 2: GPIO_ResetBits(GPIOC,GPIO_Pin_2);

break;

case 3:  GPIO_ResetBits(GPIOC,GPIO_Pin_3);

break;

default: break;

}

}

//

void LED_Off(int n)

{

switch(n)

{

case 0: GPIO_SetBits(GPIOC,GPIO_Pin_0);         //控制引脚输出高电平

break;

case 1: GPIO_SetBits(GPIOC,GPIO_Pin_1);

break;

case 2: GPIO_SetBits(GPIOC,GPIO_Pin_2);

break;

case 3:  GPIO_SetBits(GPIOC,GPIO_Pin_3);

break;

default: break;

}

}

 

 

void LED_Not(int n)

{

switch(n)

{

case 0: GPIO_WriteBit(GPIOC, GPIO_Pin_0,(BitAction)(1-(GPIO_ReadOutputDataBit(GPIOC, GPIO_Pin_0))));

break;

case 1: GPIO_WriteBit(GPIOC, GPIO_Pin_1,(BitAction)(1-(GPIO_ReadOutputDataBit(GPIOC, GPIO_Pin_1))));

break;

case 2: GPIO_WriteBit(GPIOC, GPIO_Pin_2,(BitAction)(1-(GPIO_ReadOutputDataBit(GPIOC, GPIO_Pin_2))));

break;

case 3:  GPIO_WriteBit(GPIOC, GPIO_Pin_3,(BitAction)(1-(GPIO_ReadOutputDataBit(GPIOC, GPIO_Pin_3))));

break;

default: break;

}

}


如此编译后下载到MCU就能看到LED一闪一闪的


关键字:STM32F103RCT6  控制LED 引用地址:STM32F103RCT6控制LED

上一篇:STM32F401 ILI9235液晶屏屏 2.8寸 驱动心得
下一篇:STM32F103RCT6引脚功能及使用

推荐阅读

科技公司一边鼓吹呐喊着“AI开放”口号,但它们之间关于AI等技术的专利申请和纠纷却越来越多。 上周,谷歌在旧金山举办了一年一度的云计算大会,但首席执行官桑达尔·皮查伊却忍不住对开放自家人工智能平台的承诺疯狂吐槽兼吹捧了一番。 “我们创造开放平台并分享我们的技术,因为它有助于新想法更快地出现,”皮查伊表示,谷歌从2016年5月12日起开放Syn...
英特尔日前在班加罗尔举办的英特尔AI DevCamp(英特尔AIDC)上表示,为了建立广泛的AI生态系统,过去两年中英特尔已经与超过150个组织合作,累计有超过15万名的开发者、学生和教授得到了英特尔的培训。英特尔与Wipro Limited,National Instruments,AllGoVision和OutDU合作,利用其AI技术构建解决方案。AIDC参与者包括数据科学家,深度学习工程师,机...
据 Windowslatest 报道,继此前一众微软高管晒出 Surface Duo 真机后,近日 Microsoft 365 企业副总裁杰夫 · 特珀(Jeff Teper)发布了一张新的真机图,让人们可以更深入地了解 Surface Duo 和用于双屏硬件的新 OneDrive 应用。 从图片可以看出,OneDrive 云存储服务已针对 Surface Duo 进行优化,用户可在一块屏...
聚焦十四五规划,集成电路产业炙手可热2021年是我国国民经济和社会发展第十四个五年规划纲要实施开元之年,集成电路行业作为规划纲要重点发展方向,成为各地争相发展的新标地。量子计算、人工智能、大数据、云计算、区块链等新兴领域带来的应用变革,也为集成电路市场创新和产业发展带来新契机。同时,中欧投资协定谈判签订和欧洲17国关于半导体产业联合声...

史海拾趣

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

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

厂商技术中心

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

 
机器人开发圈

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