基于STM32F103C8T6的流水灯实验(寄存器地址操作)


一、C8T6最小系统板介绍

STM32F103C8T6基于 ARM 32位 Cortex™-M3内核,电压使用范围是2.0V ~ 3.6V,工作频率最高可以达到72MHz,内部采用64K或128K字节 Flash程序存储器,以及高达20K字节的 SRAM数据存储器;内置 CRC循环冗余校验以及 96位编码( 24位的十六进制数)的芯片唯一序列号

STM32F103C8T6单片机采用LQFP48封装设计,芯片一共引出44只引脚,其中A口有A0-A15共16个引脚,B口有B0-B15共16个引脚,C口有C13-C15共3个引脚,D口有D0-D1共两个引脚。

STM32F103C8T6的最小系统板,其最小系统板就是一个最精简的电路,精简到只能维持MCU的最基本的正常工作。最小系统一般由外部复位电路、外部时钟电路以及MCU本体构成。


二、设计思路与代码

(1)根据下图,对端口寄存器进行配置:
在这里插入图片描述
配置参数代码如下:

void  LEDInit( void )
{
	RCC->APB2ENR|=1<<2;    //使能PORTA时钟	   	 
		 
	GPIOA->CRH&=0XFFFFFFF0; 
	GPIOA->CRH|=0X00000003;//PA8 推挽输出   	 
    GPIOA->ODR|=1<<8;      //PA8 输出高	
	
	RCC->APB2ENR|=1<<3;    //使能PORTB时钟
	GPIOB->CRH&=0XFFFFFF0F; 
	GPIOB->CRH|=0X00000030;//PB9 推挽输出   	 
    GPIOB->ODR|=1<<9;      //PB9 输出高	
	
	RCC->APB2ENR|=1<<4;    //使能PORTC时钟	   	 
		 
	GPIOC->CRH&=0XFF0FFFFF; 
	GPIOC->CRH|=0X00300000; //PC13 推挽输出   	 
    GPIOC->ODR|=1<<13;      //PC13 输出高	
}

(2)通过地址数组赋值实现流水灯
建立地址数组,将流水灯的地址存放进数组中,最终通过对数组内的地址的值进行赋值,实现流水灯功能。

建立数组代码:

#define BITBAND(addr, bitnum) ((addr & 0xF0000000)+0x2000000+((addr &0xFFFFF)<<5)+(bitnum<<2))
#define MEM_ADDR(addr)  *((volatile unsigned long  *)(addr))

 #define LED0  MEM_ADDR(BITBAND(GPIOA_ODR_Addr,8))//LED0为PA8引脚
 #define LED1  MEM_ADDR(BITBAND(GPIOB_ODR_Addr,9))//LED1为PB9引脚
 #define LED2  MEM_ADDR(BITBAND(GPIOC_ODR_Addr,13))//LED3为PC13引脚

volatile unsigned long * LED_[3]={0};//定义一个四个LED引脚地址的数组

主函数代码:

int main(void)
{
	 LEDInit();
	 unsigned  int flag=0;//定义一个点亮的LED标志
	LED_[0]=&LED0;
	LED_[1]=&LED1;
	LED_[2]=&LED2;//给地址数组进行赋值
     while (1)
     {
		 if(flag>2)
		 {
			 flag=0;
		 }
         *LED_[flag]=0;//LED亮
         Delay_ms(500);//延时
         *LED_[flag]=1;//LED灭
		 flag++;
     }
}

三、仿真

(1)我们在进行STM32最小系统的仿真时需要先进行电源线配置,如下所示:
菜单栏→设计→配置供电网→将VDDA加入VCC供应→将VSSA加入GND供应
在这里插入图片描述
在这里插入图片描述
(2)添加元件
在这里插入图片描述
(3)元件连线如下
在这里插入图片描述
(4)导入 .hex 文件
双击芯片,设置.hex文件路径
在这里插入图片描述
(5)仿真效果:
在这里插入图片描述

四、板级效果

在这里插入图片描述

总结

通过对STM32寄存器进行操作完成流水灯项目,了解了STM32的工作原理。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值