当前位置: 代码迷 >> 综合 >> STM32F103_study35( USART--Echo experiment)
  详细解决方案

STM32F103_study35( USART--Echo experiment)

热度:105   发布时间:2023-10-16 08:23:04.0

STM32F103_study35( USART--Echo experiment)

一、实验目的:
通过野火多功能调试助手,向STM32开发板发字符。S TM32开发板原封不动的将发送过去的字符再发送回来。
二、软件+硬件
硬件:
1.STM32F103VET6芯片开发板(野火STM32F103指南者开发板)
2.STM32仿真器
3.仿真器连接开板的线
4.两根Mini B型USB线
软件:
1.keil
2.野火多功能调试助手
三、实验所涉及的原理图:
需要用到串口的原理图
STM32F103_study35( USART--Echo experiment)
四、实验整体逻辑构架
STM32F103_study35( USART--Echo experiment)

STM32F103_study35( USART--Echo experiment)

五、实验步骤:

1.先将硬件连接好线
正常情况会是下图这种:
STM32F103_study35( USART--Echo experiment)
当电脑缺少驱动是会有感叹号:
STM32F103_study35( USART--Echo experiment)
这时我们需要安装这个驱动(直接打开安装就行):
STM32F103_study35( USART--Echo experiment)
此时打开野火多功能调试助手:
STM32F103_study35( USART--Echo experiment)
下面的串口号要和开发板连接到电脑的串口号一样
STM32F103_study35( USART--Echo experiment)
STM32F103_study35( USART--Echo experiment)
这两个串口号要一样(这儿我还没改呢)
注意:如果在安装完驱动后,还有感叹号,重启一下电脑就行了。

此时我们需要来新建这个回显实验的工程了:
首先我们需要弄清楚,我们需要设置哪些东西:
1.为什么要连接在开发板的串口上?
我们所做的是回显实验,选择的的是用串口实现,回显就是说,需要开发板向我们PC机发送数据,而我们现在开发板和PC之间传输数据必须用到串口(这个是储备知识),所以我们连接的硬件线时,连接到的是串口线。
2.为什么选择外部表时钟源?

STM32F103_study35( USART--Echo experiment)
3.为什么选择串行线
STM32F103_study35( USART--Echo experiment)
4.为什么选择UASRT1?
分析下图可知我手里这款开发板的所有USART的个数,在查看了原理图得知开发板上面的串口连接在USART1上面,而我们要实现的是回显,可供使用的串口只有一个,所以我们不得不使用USART1
STM32F103_study35( USART--Echo experiment)
STM32F103_study35( USART--Echo experiment)

STM32F103_study35( USART--Echo experiment)
STM32F103_study35( USART--Echo experiment)
5.
为啥选择了异步收发呢?
因为异步不需要配置时钟,这让程序代码更加简单,难度也降低了。

STM32F103_study35( USART--Echo experiment)
6.
这个你自己调就行了,但要保证这两个配置的参数必须一样,这样这两个东西才能通信。

STM32F103_study35( USART--Echo experiment)
STM32F103_study35( USART--Echo experiment)
7.
这儿的引脚是默认的,你也可以改,但是呢,你的查看你该的引脚的复用功能是否能够作为USART1的收或者发。
STM32F103_study35( USART--Echo experiment)8.
这是在设置该串口的中断使能。
STM32F103_study35( USART--Echo experiment)
9.该实验涉及的外设全部挂载APB总线上,所以外设的时钟直接从总线上面获取就行。
时钟设置:
STM32F103_study35( USART--Echo experiment)

新建串口初始化代码过程:
STM32F103_study35( USART--Echo experiment)

芯片要根据自己的开发板芯片类型去选,不知道自己芯片类型的去开自己开发板原理图,原理图会有
STM32F103_study35( USART--Echo experiment)
STM32F103_study35( USART--Echo experiment)
STM32F103_study35( USART--Echo experiment)
STM32F103_study35( USART--Echo experiment)
STM32F103_study35( USART--Echo experiment)
STM32F103_study35( USART--Echo experiment)
STM32F103_study35( USART--Echo experiment)
这两边的参数设置要一样
STM32F103_study35( USART--Echo experiment)
STM32F103_study35( USART--Echo experiment)
STM32F103_study35( USART--Echo experiment)

代码分析:

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(); 

为什么它要初始化?
它初始化了那些东西?
它初始化的那些东西对这个实验有影响?

  相关解决方案