Keil——STM32F103C8T6:LED流水灯

前言:使用Keil编写LED流水灯,在STM32F103C8T6中运行,实现LED流水灯

一、面包板接线,将LED灯组连接到C8T6接口上。

1. 将ST-LINK与芯片接口相连接,作为芯片电源以及能够烧入程序。

具体内容,恕不详述,个人推荐可在视频网站上找详细视频,操作起来更加便捷。

2. 将LED灯分别与芯片接口连接。

本人使用的是A0、A1、A2接口,连接上红黄绿三色LED灯,组合为LED流水灯。
LED灯

到此,实验需要的连接工作完成。

二、编写LED流水灯程序。

1. 新建LED流水灯工程

在这里插入图片描述
在这里插入图片描述

选择STM32F103C8T6芯片
在这里插入图片描述在这里插入图片描述
我用的是ST-LINK烧录程序,若是使用TTL烧录则还需要打开output中的输出HEX文件选项,并且下载烧录软件才能进行烧录
在这里插入图片描述

2. 新建main.c文件,并编写程序

(1)新建main.c文件
在这里插入图片描述

(2)编写程序


//--------------APB2使能时钟寄存器------------------------
#define RCC_APB2ENR		*((unsigned volatile int*)0x40021018)

//----------------GPIOA配置寄存器 ------------------------
#define GPIOA_CRL		*((unsigned volatile int*)0x40010800)
#define	GPIOA_ODR		*((unsigned volatile int*)0x4001080C)
	

//函数声明
void Delay_ms(volatile  unsigned  int);
void A_LED_LIGHT(void);
void B_LED_LIGHT(void);
void C_LED_LIGHT(void);

//时延函数
void Delay_ms( volatile  unsigned  int  t)
{
     unsigned  int  i;
     while(t--)
         for (i=0;i<10000;i++);
}

//控制灯亮灭
void A_LED_LIGHT()
	{
    GPIOA_ODR=0x0<<0;		//PA5低电平
	GPIOA_ODR=0x1<<1;		//PB9高电平
	GPIOA_ODR=0x1<<2;		//PC14高电平	
}
void B_LED_LIGHT()
	{
	GPIOA_ODR=0x1<<0;		//PA5高电平
	GPIOA_ODR=0x0<<1;		//PB9低电平
	GPIOA_ODR=0x1<<2;		//PC14高电平
}
void C_LED_LIGHT()
	{
	GPIOA_ODR=0x1<<0;		//PA5高电平
	GPIOA_ODR=0x1<<1;		//PB9高电平
	GPIOA_ODR=0x0<<2;		//PC14低电平
}

//------------------------主函数--------------------------
int main(){

	RCC_APB2ENR|=1<<2;			//APB2-GPIOA外设时钟使能
	RCC_APB2ENR|=1<<3;			//APB2-GPIOB外设时钟使能	
	RCC_APB2ENR|=1<<4;			//APB2-GPIOC外设时钟使能
//也可以写成 RCC_APB2ENR|=1<<3|1<<4;
	

  GPIOA_CRL&=0xFFF0FFFF;		//设置位清零	
  GPIOA_CRL|=0X00200000;		//PA5推挽输出,把第23、22、21、20位变为0010
	
  GPIOB_CRH&=0xFF0FFFFF;		//设置位清零	
  GPIOB_CRH|=0x00000020;		//PB9推挽输出,把第7、6、5、4变为0010
	 
  GPIOC_CRH&=0xFF0FFFFF;		//设置位清零	
  GPIOC_CRH|=0x02000000;		//PC14推挽输出,把第27、26、25、24变为0010

	GPIOA_ODR |= (1<<0);  
	GPIOA_ODR |= (1<<1);      //设置灯的初始状态为灭
	GPIOA_ODR |= (1<<2); 
	
	while(1)
		{
		  A_LED_LIGHT();
		  Delay_ms(60);
		  B_LED_LIGHT();
		  Delay_ms(60);
		  C_LED_LIGHT();
		  Delay_ms(60);
	}

}






(3)保存文件
在这里插入图片描述

保存为main.c文件
(4)在工程文件中添加main.c文件
在这里插入图片描述
在这里插入图片描述
(5)编译运行

LED流水灯

参考:最简单的STM32入门教程----闪烁LED
如何开始一个stm32的简单程序的编译

  • 1
    点赞
  • 34
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值