一、实验目的:
通过野火多功能调试助手,向STM32开发板发字符。S TM32开发板原封不动的将发送过去的字符再发送回来。
二、软件+硬件
硬件:
1.STM32F103VET6芯片开发板(野火STM32F103指南者开发板)
2.STM32仿真器
3.仿真器连接开板的线
4.两根Mini B型USB线
软件:
1.keil
2.野火多功能调试助手
三、实验所涉及的原理图:
需要用到串口的原理图
四、实验整体逻辑构架
五、实验步骤:
1.先将硬件连接好线
正常情况会是下图这种:
当电脑缺少驱动是会有感叹号:
这时我们需要安装这个驱动(直接打开安装就行):
此时打开野火多功能调试助手:
下面的串口号要和开发板连接到电脑的串口号一样
这两个串口号要一样(这儿我还没改呢)
注意:如果在安装完驱动后,还有感叹号,重启一下电脑就行了。
此时我们需要来新建这个回显实验的工程了:
首先我们需要弄清楚,我们需要设置哪些东西:
1.为什么要连接在开发板的串口上?
我们所做的是回显实验,选择的的是用串口实现,回显就是说,需要开发板向我们PC机发送数据,而我们现在开发板和PC之间传输数据必须用到串口(这个是储备知识),所以我们连接的硬件线时,连接到的是串口线。
2.为什么选择外部表时钟源?
3.为什么选择串行线
4.为什么选择UASRT1?
分析下图可知我手里这款开发板的所有USART的个数,在查看了原理图得知开发板上面的串口连接在USART1上面,而我们要实现的是回显,可供使用的串口只有一个,所以我们不得不使用USART1
5.
为啥选择了异步收发呢?
因为异步不需要配置时钟,这让程序代码更加简单,难度也降低了。
6.
这个你自己调就行了,但要保证这两个配置的参数必须一样,这样这两个东西才能通信。
7.
这儿的引脚是默认的,你也可以改,但是呢,你的查看你该的引脚的复用功能是否能够作为USART1的收或者发。
8.
这是在设置该串口的中断使能。
9.该实验涉及的外设全部挂载APB总线上,所以外设的时钟直接从总线上面获取就行。
时钟设置:
新建串口初始化代码过程:
芯片要根据自己的开发板芯片类型去选,不知道自己芯片类型的去开自己开发板原理图,原理图会有
这两边的参数设置要一样
代码分析:
int main(void)
{
HAL_Init();
/* 配置系统时钟为72 MHz */
SystemClock_Config();
/*初始化USART 配置模式为 115200 8-N-1,中断接收*/
DEBUG_USART_Config();
/*调用printf函数,因为重定向了fputc,printf的内容会输出到串口*/
printf("欢迎使用野火开发板\n");
/*自定义函数方式*/
Usart_SendString( (uint8_t *)"自定义函数输出:这是一个串口中断接收回显实验\n" );
while(1)
{
}
}
HAL_Init();
为什么它要初始化?
它初始化了那些东西?
它初始化的那些东西对这个实验有影响?