欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

STM32 串口通讯(入门练习)

程序员文章站 2022-03-05 10:33:56
...

一、基于寄存器与基于固件库的 STM32 LED 流水灯例子的编程方式的差异

二、STM32 的 USART 窗口通讯程序

1. 实验内容

  1. 设置波特率为115200,1位停止位,无校验位。
  2. STM32 系统给上位机(win10)连续发送“hello windows!”,上位机接收程序可以使用“串口调试助手”,也可自己编程。
  3. 当上位机给 STM32 发送 Stop,stm32 后,STM32 停止发送。

2. 实验步骤

2.1 安装软件驱动

  1. 下载资料中的 串口_网络_电机多功能调试助手.rar
    STM32 串口通讯(入门练习)

野火 STM32F103_MINI 开发板资料链接:
链接:https://pan.baidu.com/s/1ci3HmDMNdzSOAneJWHPo5g
提取码:1r2z
3. 下载好后解压并点击进入解压后的文件夹
再解压里面的 .rar 压缩包
STM32 串口通讯(入门练习)
解压后获得这个文件
STM32 串口通讯(入门练习)
4. 运行 CH341SER.EXE 文件安装驱动
STM32 串口通讯(入门练习)
STM32 串口通讯(入门练习)

2.2 安装串口调试助手

在刚刚网盘中下载的 串口_网络_电机多功能调试助手.rar 中下载 FireTools
STM32 串口通讯(入门练习)
解压后进入解压文件夹,即可使用 FireTools
STM32 串口通讯(入门练习)

2.3 调试代码

该部分工程文件采用野火提供的工程文件
STM32 串口通讯(入门练习)
STM32 串口通讯(入门练习)
STM32 串口通讯(入门练习)

  1. 修改串口终端服务函数
    STM32 串口通讯(入门练习)
    修改后代码如下

    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] == '2')
    	{
    		if(ucTemp[i-1] == '3'&&ucTemp[i-2] == 'm'&&ucTemp[i-3] == 't'&&ucTemp[i-4] == 's'&&ucTemp[i-5] == ' ')
    			if(ucTemp[i-6] == 'p'&&ucTemp[i-7] == 'o'&&ucTemp[i-8] == 't'&&ucTemp[i-9] == 'S')
    			{
    				printf("停止发送");
            while(1);
    			}
    	}
    	i++;			
    }
    
    1. 修改 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\n");
    		delay(5000000);
    	}	
    }
    

2.4 编译并烧入

keil烧入前的配置省略

烧入后打开 FireTools 效果如下
STM32 串口通讯(入门练习)
输入 Stop stm32 中断运行
STM32 串口通讯(入门练习)