STM32F103C8T6实现流水灯

本文介绍了如何使用STM32F103C8T6通过GPIO端口控制3个LED灯实现流水灯效果。首先建立新工程,然后配置GPIO端口初始化,包括时钟配置、端口偏移地址和时钟使能。接着设置输入输出模式和输出速率,选择推挽输出模式,速度为2Mhz。最后,通过C语言实现流水灯的代码逻辑,并观察GPIO端口输出波形。
摘要由CSDN通过智能技术生成

要求:以 STM32最小系统核心板STM32F103C8T6+面板板+3只红绿蓝LED 搭建电路,使用GPIOA-5、GPIOB-9、GPIOC-14这3个端口控制LED灯,轮流闪烁,间隔时长1秒。
1)写出程序设计思路,包括GPIOx端口的各寄存器地址和详细参数;
2)分别用汇编语言,C语言编程实现。

一、建立新工程

1.新建工程Light2文件,选择STM32F103C8
在这里插入图片描述
2.出现弹窗,不勾选下面的setgep,只勾选core项
在这里插入图片描述
3.添加驱动文件
到这里,我们还只是建了一个框架,还需要添加启动代码,以及.c 文件等。
ST 公司提供了 3 个启动文件给我们,分别用于不同容量的 STM32 芯片,这三个文件是:
startup_stm32f10x_ld.s,startup_stm32f10x_md.s,startup_stm32f10x_hd.s
其中,ld.s 适用于小容量 产品;md.s 适用于中等容量产品;hd 适用于大容量产品;
这里的容量是指 FLASH 的大小.判断方法如下:

小容量:FLASH≤32K
中容量:64K≤FLASH≤128K
大容量:256K≤FLASH

本次选用芯片stm32c8t6其Flash容量为128k,属于中容量,因此我在这里采用startup_stm32f10x_md.s作为启动文件。
在这里插入图片描述
添加进去
在这里插入图片描述

二、寄存器点亮LED灯

1、GPIO端口初始化

1.时钟配置

找到时钟使能寄存器映射基地址,我们使用的引脚是PA5,PB9,PC14,即GPIOA,B,C三个端口。该三个端口都属于APB2总线
在这里插入图片描述

2.找到端口偏移地址以及对应端口所在位置

在这里插入图片描述

3.使能对应端口时钟

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

	RCC_APB2ENR|=1<<2|1<<3|1<<4;			//APB2-GPIOA、GPIOB、GPIOC外设时钟使能	

2、输入输出模式和输出速率设置

本次实验采用通用推挽输出模式,最高输出时钟频率2Mhz。分别用到A5、B9、C14三个引脚。其中A5、B9属于端口配置低寄存器偏移地址为0x00,C14属于端口配置高寄存器偏移地址为0x04。

1、找到GPIOx端口基地址

在这里插入图片描述

2、配置对应引脚寄存器,基地址+偏移量

//----------------GPIOA配置寄存器 -----------------------
#define GPIOA_CRL		*(<
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值