STM32F103C8T6实现流水灯

要求:以 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|
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值