基于STM32的串口通讯
一、相关软件的下载
基于使用的是STM32指南者,从上位机下载程序到开发板就通过USB把程序烧录到STM32中。
- 关于指南者的配套资料以及所有野火官方的学习资料在百度云盘下载:
野火官方学习资料
我们首先把开发板和电脑通过USB连接起来,开发板处连接到USB转接口,然后打开开关,在开关位置会有红灯亮起来。开发板的其他细节在出厂时基本上已经设置好,没必要的就无需修改。
官方资料下载好后我们需要找到以下几个软件:
然后选中图示所选软件进行安装下载:
然后选择USB串口驱动软件进行安装,双击以后直接进行安装即可,会提示安装成功。(我之前已经提前安装过,重新安装会显示安装失败)安装完以后就可以关闭。
然后打开串口下载软件进行安装,这是进行HEX文件烧录到开发板的一个途径或者桥梁。
打开后如图所示:(在云盘下载的学习资料中也有关于软件的详细讲解和使用)
如果开发板已经连接到电脑,那么就会在顶端显示端口号,然后我们按照图示的顺序进行稍微的修改,就可以把生成的HEX文件烧录到开发板中执行了。(如果右侧一直显示连接,可以按下开发板上的RESET键,然后重新进行编程一下)
至此,软件方面我们已经准备就绪。
二、程序实例
我们这次实例是使用的官方资料中的实验实例:
按着图示路径找到我们这次的实验示例,使用Keli打开
我们这次要实现以下功能:
-
设置波特率为115200,1位停止位,无校验位。
-
STM32系统给上位机(win10)连续发送“hello windows!”,
-
当上位机给stm32发送“Stop stm32!”后,stm32停止发送。
接下来我们就通过给的实例代码进行一部分的修改就可以了
- 把其中stm32f10x_it.c文件的串口中断服务函数部分改为如下:
int i=0;
uint8_t ucTemp[50];
void DEBUG_USART_IRQHandler(void)
{
if(USART_GetITStatus(DEBUG_USARTx,USART_IT_RXNE)!=RESET)
{
ucTemp[i] = USART_ReceiveData(USART1);
}
if(ucTemp[i] == '!')
{
if(ucTemp[i-1] == '2'&&ucTemp[i-2] == '3'&&ucTemp[i-3] == 'm'&&ucTemp[i-4] == 't'&&ucTemp[i-5] == 's'&&ucTemp[i-6] == ' ')
if(ucTemp[i-7] == 'p'&&ucTemp[i-8] == 'o'&&ucTemp[i-9] == 't'&&ucTemp[i-10] == 's')
{
printf("ÊÕµ½£¡");
while(1);
}
}
i++;
}
- 然后把main.c函数改为如下:
#include "stm32f10x.h"
#include "bsp_usart.h"
void delay(uint32_t count)
{
while(count--);
}
int main(void)
{
USART_Config();
while(1)
{
printf("hello windows 10!\n");
delay(5000000);
}
}
- 点击构建以后,就生成了HEX文件,然后我们使用串口下载到开发板中
然后打开调试助手
点击打开串口,就会出现如图所示界面:
然后我们输入stop stm32!就可以停止串口通讯。
小结
本次实验我们初步的熟悉了通过电脑把程序烧录到开发板的过程,这个过程对于初次做本次实验是陌生的,以后可以根据网盘下载的资料进行更多的学习STM32开发的知识。
上一篇: Linux 安装 FFmpeg
下一篇: linux下ffmpeg安装记录