stm32c8t6之点亮led(代码实现)

文章介绍了如何使用STM32F10x微控制器的GPIO功能来初始化并控制LED灯。主要步骤包括开启GPIO时钟,定义GPIO结构体变量,设置工作模式为推挽输出,选择端口A1,设定输出速度为50MHz,并通过LED_Init函数进行初始化。在主函数中,LED灯通过GPIO_SetBits和GPIO_ResetBits实现周期性的亮灭效果,间隔为500ms。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

这里只介绍代码,具体的GPIO结构可学习野火的学习手册,这样就更清楚为什么是这样设置,而不是其它的。

代码点亮LED涉及的要点:

开启时钟(GPIO挂在APB2总线上)、定义结构体变量、设置工作模式

、选择端口、输出速度、初始化GPIO

led.c

#include "stm32f10x.h"
#include "led.h"

/**
led初始化:使能时钟、定义结构体变量、设置工作模式
、选择端口、输出速度、初始化GPIO
**/
void LED_Init(void)
{
     //使能GPIOA时钟
     RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA,ENABLE);
      
     //GPIO结构体成员配置
     GPIO_InitTypeDef GPIO_InitStructure;//定义结构体变量
     GPIO_InitStructure.GPIO_Mode=GPIO_Mode_Out_PP;//推挽输出模式
     GPIO_InitStructure.GPIO_Pin=GPIO_Pin_1;//输出端口A1
     GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz;//输出速度
     GPIO_Init(GPIOA,&GPIO_InitStructure);//初始化GPIO
      
     //端口默认电平
     //GPIO_SetBits(GPIOA,GPIO_Pin_1);//A1高电平
}

led.h

其ifndef、define、endif 是为了防止重复编译。为了方便修改可将引脚、速度等进行封装在该文件中,如将led.c 中的GPIO_Pin_1

#ifndef _LED_H
#define _LED_H

void LED_Init(void);

//define   GPIO_Pin_1    A1   //封装引脚,方便修改

#endif 

main.c

#include "stm32f10x.h"
#include "led.h"
#include "Delay.h"//引入延时
int main(void)
{
    LED_Init();//初始化LED
       
      while(1)
        {        
                //亮
                GPIO_SetBits(GPIOA,GPIO_Pin_1);//A1高电平
                Delay_ms(500);
                //灭
                GPIO_ResetBits(GPIOA,GPIO_Pin_1);//A1低电平
                Delay_ms(500);    
        }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值