实验任务:
以 STM32最小系统核心板(STM32F103C8T6)+面板板+3只红绿蓝LED 搭建电路,使用GPIOB、GPIOC、GPIOD这3个端口控制LED灯(最高时钟2Mhz),轮流闪烁,间隔时长1秒。
1)写出程序设计思路,包括GPIOx端口的各寄存器地址和详细参数;
2)分别用汇编语言,C语言编程实现。
实验过程:
STM32F103C8T6简介
STM32F103C8T6是一款基于ARM Cortex-M 内核STM32系列的32位的微控制器,程序存储器容量是64KB,需要电压2V~3.6V,工作温度为-40°C ~ 85°C。
寄存器简介
寄存器的功能是存储二进制代码,它是由具有存储功能的触发器组合起来构成的。一个触发器可以存储1位二进制代码,故存放n位二进制代码的寄存器,需用n个触发器来构成。寄存器分为基本寄存器和移位寄存器两大类。基本寄存器只能并行送入数据,也只能并行输出。
流水灯原理简述
通过对GPIO端口的初始化配置设置引脚的模式、速率,进而对寄存器的存储数据进行修改。对于确定引脚的值需要写一个16位二进制数。
C语言实现
打开keil,在 project --> new μvision project。选择STM32F103C8:
之后勾选Creat Hex File,并在debug中配置与之前仿真调试对应的配置。
之后写入自己的C语言代码:
之后build并运行,会得到hex文件。
在配置好环境后打开FlyMcu,搜索串口并将bps调整至25600,在程序文件中选择对应生成的hex文件,并进行 读器件信息,最后 开始编程。
运行可以看到:
汇编实现
新建项目,过程大致与C语言相同,但是在环境勾选时注意不勾选Starup:
之后录入自己的汇编语言:
可以得到运行结果: