STM32F103的流水灯点亮版本1(寄存器地址操作)

本文详细描述了使用C语言在STM32F103C8芯片上实现LED流水灯的步骤,包括创建工程、添加文件、配置GPIO、编写延时函数、实物连接以及烧录过程。
摘要由CSDN通过智能技术生成

一、C语言代码实现(Keil)

1、创建新工程,此次实验选择stm32f103c8芯片,此处我忘记截图了,就简单的口述了。

2、添加新文件,并编写相应的c语言程序段,以完成led流水灯,程序如下:


#define GPIOB_BASE 0x40010C00
#define GPIOC_BASE 0x40011000
#define GPIOA_BASE 0x40010800

#define RCC_APB2ENR (*(unsigned int *)0x40021018)

#define GPIOB_CRL (*(unsigned int *)0x40010C00)
#define GPIOC_CRH (*(unsigned int *)0x40011004)
#define GPIOA_CRL (*(unsigned int *)0x40010800)

#define GPIOB_ODR (*(unsigned int *)0x40010C0C)
#define GPIOC_ODR (*(unsigned int *)0x4001100C)
#define GPIOA_ODR (*(unsigned int *)0x4001080C)
	


void SystemInit(void);
void Delay_ms(volatile  unsigned  int);

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

 


int main(){
	// 开启时钟
	RCC_APB2ENR |= (1<<3); //  GPIOB 
	RCC_APB2ENR |= (1<<4); //  GPIOC 
	RCC_APB2ENR |= (1<<2); //  GPIOA 
	
	
	//  GPIO 设置输出
	//  设置GPIOB 最后四位 0001 (B0)
	GPIOB_CRL |= (1<<0);  // 最后一位设置为1
	GPIOB_CRL &= ~(0xE);  // 最后2.3.4位设置0
	//  GPIOC 前四位 0001  (C15)
	GPIOC_CRH |= (1<<28); // 前面第4位设置为1
	GPIOC_CRH &= ~(0xE0000000);  // 前123位设置为0
	//  GPIOA 后四位 0001 (A0)
	GPIOA_CRL |= (1<<0);  //最后一位设置为1
	GPIOA_CRL &= ~(0xE);  //最后2.3.4位设置为0

	
	// 3LED初始化不亮 高电平3
	GPIOB_ODR |= (1<<0);  // 最后一位设置为1
  GPIOC_ODR |= (1<<15); // 倒数15位设置为1
	GPIOA_ODR |= (1<<0);  // 最后一位设置为1
	*(unsigned int*)0x40021018 |= (1<<4);//打开时钟
	*(unsigned int*)0x40011004 &= ~(0x0f<<(4*5));//配置输出模式
	*(unsigned int*)0x40011004 |= (1<<(4*5));
	*(unsigned int*)0x4001100C &= ~(1<<13);//输出低电平
	

	
	while(1){
		GPIOB_ODR &= ~(1<<0); // 1亮
		Delay_ms(1000);
		GPIOB_ODR |= (1<<0);  // 1灭
		Delay_ms(1000);
		
		GPIOC_ODR &= ~(1<<15); // 2亮
		Delay_ms(1000);
		GPIOC_ODR |= (1<<15);  // 2灭
		Delay_ms(1000);
		
		GPIOA_ODR &= ~(1<<0); // 3亮
		Delay_ms(1000);
		GPIOA_ODR |= (1<<0);  // 3灭
		Delay_ms(1000);
		
	}
	
}


void SystemInit(){   //防报错
	
}

并完成相应的编译工作,此处要注意将文件startup_stm32f10x_md.s添加入相关工程中。

3、生成相应的hex文件,如图所示:

到此为止相关的程序已准备完毕。

二、实物连线

此处需要完成相关stm32芯片的连接工作。实物连接时需对应好每个引脚的位置,否则会导致实物板无法正常运行
连接引脚:
VCC-3V3
3V3-PA10
RXD-PA9
GND-GND
红灯-PB0
绿灯-PA0
黄灯-C15

此处有许多需要注意的事项,稍有不慎便会影响下一步。

1、核心板插入面包板时尽量要看不到引脚

2、在烧录前核心板要置1

3、在烧录前检查是否能正常连接开发板,如果显示连接超时可按下reset键再试一次,如果仍无法连接,可能usb转与核心板件连接有误或没有置1.

 4、在连接时,注意核心板插入哪个串口,连接串口要与核心板插入串口一致

三、烧录

这一步便是将相关程序导入到stm32芯片中来运行,过程如图:

再导入之后板子会自动运行,运行结果如下:

video_20231004_222843

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值