一丶原理
STM32F103C8T6芯片简介
根据STM32&STM8产品型号命名规则(参考:STM32单片机最小系统详解)可知: STM32F103C8T6这个命名中:
STM32代表STM32家族,32位MCU; F代表产品类型为基础型; 103代表特定功能为STM32基础型; C代表引脚数为48&49引脚; 8代表内存容量为64KB; T代表封装为QFP; 6代表温度范围为-40到+85℃。
核心板原理图
![在这里插入图片描述](https://img-blog.csdnimg.cn/74c3d547f5ed44b898d9126b21c9e1b8.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBA5bCP572XZGXnpL7ljLo=,size_20,color_FFFFFF,t_70,g_se,x_16)
二、工程的建立
首先新建一个light工程,本实验要求我们用STM32C8T6芯片,所以在建立工程前选择芯片要选择相对应的。 ![在这里插入图片描述](https://img-blog.csdnimg.cn/9543a23d430d47d4a258469b1a9df505.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBA5bCP572XZGXnpL7ljLo=,size_20,color_FFFFFF,t_70,g_se,x_16) ![在这里插入图片描述](https://img-blog.csdnimg.cn/7f4a76cafd7b4212919b97a8c07fbf43.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBA5bCP572XZGXnpL7ljLo=,size_20,color_FFFFFF,t_70,g_se,x_16) 此时,还需要添加启动代码,以及.c 文件等。 启动代码就是一段与硬件相关的汇编代码,ST公司对于不同容量的芯片提供了不同的三个启动文件,分别是: startup_stm32f10x_ld.s,startup_stm32f10x_md.s,startup_stm32f10x_hd.s 我在这里采用startup_stm32f10x_md.s作为启动文件。 ![在这里插入图片描述](https://img-blog.csdnimg.cn/423ce6c766c142179973063c6fcb3000.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBA5bCP572XZGXnpL7ljLo=,size_20,color_FFFFFF,t_70,g_se,x_16) 接下来我们在工程文件夹右键点击Manage Project Items,可以看到此时只有一个source group组,我们添加一个组用来存放sys.c,delay.c和usart.c文件。 ![在这里插入图片描述](https://img-blog.csdnimg.cn/254b65110c2c4ff78c6db60a5b282de8.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBA5bCP572XZGXnpL7ljLo=,size_20,color_FFFFFF,t_70,g_se,x_16) ![在这里插入图片描述](https://img-blog.csdnimg.cn/bbbbedf9154547a286c39e0339491402.png)
配置Options for Target 'Target 1’ 此时,我们修改全局宏定义在C++处修改宏定义 ![在这里插入图片描述](https://img-blog.csdnimg.cn/ecc3669c8dfd4b9bb7dca039bd05e069.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBA5bCP572XZGXnpL7ljLo=,size_20,color_FFFFFF,t_70,g_se,x_16)
点击Output,其中select folder for objects是选择生成的hex存放的目录,这里选择存放在建立的OBJ文件夹中,Create HEX File用于生成可执行代码文件(可以用编程器写入单片机芯片的 HEX 格式文件,文件的扩展名为.HEX) ![在这里插入图片描述](https://img-blog.csdnimg.cn/ac39abe2730f42ba94c62ab66bec891e.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBA5bCP572XZGXnpL7ljLo=,size_20,color_FFFFFF,t_70,g_se,x_16) 此时工程建立完毕。
三、使用寄存器点亮LED灯
代码实现
我们首先要初始化LED灯的接口并配置时钟 代码如下 led.c
#include "led.h"
void LED_Init(void)
{
RCC->APB2ENR|=1<<2;
RCC->APB2ENR|=1<<3;
GPIOB->CRL&=0XFF0FFFFF;
GPIOB->CRL|=0X00300000;
GPIOB->ODR|=1<<5;
GPIOB->CRL&=0XFFFFFFF0;
GPIOB->CRL|=0X00000003;
GPIOB->ODR|=1<<0;
GPIOA->CRL&=0XFFFFFF0F;
GPIOA->CRL|=0X00000030;
GPIOA->ODR|=1<<1;
}
led.h
#include "sys.h"
void LED_Init(void);
main程序 的编写,根据题目要求需要三种颜色交替闪烁,交替闪烁的实现在电路中就是对应高低电平的配置,接高电平3.3V就是亮,低电平0V就是熄灭,同时三种颜色闪烁之间有间隔需要设置一个延时时间。
int main (void){
RCC_Configuration();
LED_Init();
while(1){
GPIO_SetBits(GPIOA,GPIO_Pin_0);
delay_s(1);
GPIO_ResetBits(GPIOA,GPIO_Pin_0);
delay_s(1);
delay_s(1);
GPIO_SetBits(GPIOB,GPIO_Pin_0);
delay_s(1);
GPIO_ResetBits(GPIOB,GPIO_Pin_0);
delay_s(1);
delay_s(1);
GPIO_SetBits(GPIOC,GPIO_Pin_13);
delay_s(1);
GPIO_ResetBits(GPIOC,GPIO_Pin_13);
delay_s(1);
delay_s(1);
}
}
硬件连接
![在这里插入图片描述](https://img-blog.csdnimg.cn/f35a2bdc03be4892ab6b6bc5544521d3.jpg?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBA5bCP572XZGXnpL7ljLo=,size_20,color_FFFFFF,t_70,g_se,x_16) 面包板介绍 面包板是由于板子上有很多小插孔,专为电子电路的无焊接实验设计制造的。由于各种电子元器件可根据需要随意插入或拔出,免去了焊接,节省了电路的组装时间,而且元件可以重复使用,所以非常适合电子电路的组装、调试和训练。 整板使用热固性酚醛树脂制造,板底有金属条,在板上对应位置打孔使得元件插入孔中时能够与金属条接触,从而达到导电目的。一般将每5个孔板用一条金属条连接。板子中央一般有一条凹槽,这是针对需要集成电路、芯片试验而设计的。板子两侧有两排竖着的插孔,也是5个一组。这两组插孔是用于给板子上的元件提供电源 ![在这里插入图片描述](https://img-blog.csdnimg.cn/8164b6b176de433cba45621e3395bcf0.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBA5bCP572XZGXnpL7ljLo=,size_20,color_FFFFFF,t_70,g_se,x_16)
烧录
我们烧录运用到的是FlyMcu软件 ![在这里插入图片描述](https://img-blog.csdnimg.cn/75d6c666880e48ef82332fa39b612cea.png) 打开FlyMcu软件,界面如下所示 ![在这里插入图片描述](https://img-blog.csdnimg.cn/1ab7c3aad6d1489b87204354d95c33d0.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBA5bCP572XZGXnpL7ljLo=,size_20,color_FFFFFF,t_70,g_se,x_16)
正确连接好USB-TTL和面包板,注意好对应关系: PA9——RXD PA10——TXD 3.3V接电 GND接地
在FlyMcu界面勾选编程后执行,选择好读取的hex文件路径,在最下角选择RTS低电平复位,DTR高电平进BootLoader ![在这里插入图片描述](https://img-blog.csdnimg.cn/ff5fae40edd74fdd9aceb2dfdc378fd9.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBA5bCP572XZGXnpL7ljLo=,size_12,color_FFFFFF,t_70,g_se,x_16)
运行展示
参考链接 https://blog.csdn.net/weixin_39938935/article/details/110134353 https://blog.csdn.net/qq_53072511/article/details/120923480
|