- STM32F103C8T6实现流水灯
- 一、实验原理
- 二、c语言实现
- 三、总结
- 四、参考
- 五、附件
1.1 stm32f103c8t6介绍
STM32F103C8T6是一款由意法半导体公司(ST)推出的基于Cortex-M3内核的32位微控制器,硬件采用LQFP48封装,属于ST公司微控制器中的STM32系列。
1.2 stm32f103c8t6点亮流水灯原理
详细原理参考博客:https://blog.csdn.net/geek_monkey/article/details/86291377.
1.项目创建
选择STM32F103C8,后面选择startup和core
2.点击魔法棒,在output里选择create hex file
3.在source group里创建led.c,并写入代码
//--------------APB2使能时钟寄存器------------------------
#define RCC_AP2ENR *((unsigned volatile int*)0x40021018)
//----------------GPIOA配置寄存器 ------------------------
#define GPIOA_CRL *((unsigned volatile int*)0x40010800)
#define GPIOA_ORD *((unsigned volatile int*)0x4001080C)
//----------------GPIOB配置寄存器 ------------------------
#define GPIOB_CRH *((unsigned volatile int*)0x40010C04)
#define GPIOB_ORD *((unsigned volatile int*)0x40010C0C)
//----------------GPIOC配置寄存器 ------------------------
#define GPIOC_CRH *((unsigned volatile int*)0x40011004)
#define GPIOC_ORD *((unsigned volatile int*)0x4001100C)
//-------------------简单的延时函数-----------------------
void Delay_ms( volatile unsigned int t)
{
unsigned int i;
while(t--)
for (i=0;i<800;i++);
}
void A_LED_LIGHT(){
GPIOA_ORD=0x0<<7; //PA7低电平
GPIOB_ORD=0x1<<9; //PB9高电平
GPIOC_ORD=0x1<<15; //PC15高电平
}
void B_LED_LIGHT(){
GPIOA_ORD=0x1<<7; //PA7高电平
GPIOB_ORD=0x0<<9; //PB9低电平
GPIOC_ORD=0x1<<15; //PC15高电平
}
void C_LED_LIGHT(){
GPIOA_ORD=0x1<<7; //PA7高电平
GPIOB_ORD=0x1<<9; //PB9高电平
GPIOC_ORD=0x0<<15; //PC15低电平
}
//------------------------主函数--------------------------
int main()
{
int j=100;
RCC_AP2ENR|=1<<2; //APB2-GPIOA外设时钟使能
RCC_AP2ENR|=1<<3; //APB2-GPIOB外设时钟使能
RCC_AP2ENR|=1<<4; //APB2-GPIOC外设时钟使能
//这两行代码可以合为 RCC_APB2ENR|=1<<3|1<<4;
GPIOA_CRL&=0x0FFFFFFF; //设置位 清零
GPIOA_CRL|=0x20000000; //PA7推挽输出
GPIOA_ORD|=1<<7; //设置PA7初始灯为灭
GPIOB_CRH&=0xFFFFFF0F; //设置位 清零
GPIOB_CRH|=0x00000020; //PB9推挽输出
GPIOB_ORD|=1<<9; //设置初始灯为灭
GPIOC_CRH&=0x0FFFFFFF; //设置位 清零
GPIOC_CRH|=0x30000000; //PC15推挽输出
GPIOC_ORD|=0x1<<15; //设置初始灯为灭
while(j)
{
A_LED_LIGHT();
Delay_ms(10000000);
B_LED_LIGHT();
Delay_ms(10000000);
C_LED_LIGHT();
Delay_ms(10000000);
}
}
4.运行,再object文件下产生hex文件
5.烧录
将产生的hex文件通过flymcu烧录到板子里
6.运行结果
7.板子连接方式
GND — GND
3v3 — G
TXD — A10
RXD — A9
8.使用示波器显示三个GPIO端口的输出波形,先进入仿真调试
由下图可见,仿真图运行正常。
点击增加键,如果要增加A7引脚,就写入POTRA.7,然后就会出现图中的样子,同时记得把display type换为bit,其他引脚也像这样添加就行了。
经过反复调试,终于把灯搞亮了,其中接线环节卡了我一下,程序环节也卡了我,这次实验比较有趣,也比较有成就感。
四、参考链接: https://blog.csdn.net/junseven164/article/details/120804940?spm=1001.2014.3001.5501.
链接: https://blog.csdn.net/geek_monkey/article/details/86291377.
链接: flycum下载
提取码:1111



