STM32 串口的使用–以串口调试助手为例

@(STM32基本外设)

串口介绍

USART ((Universal Synchronous Asynchronous Receiver and Transmitter, 通用同步异步收发器), 是一 个串行通信设备,可以灵活地与外部设备进行全双工数据交换。有别于 USART 还有一个 UART(Universal Asynchronous Receiver and Transmitter),它是在 USART 基础上裁剪掉了同 步通信功能,只有异步通信。简单区分同步和异步就是看通信时需不需要接SCLK即时钟线,我们平时用的串口通信基本都是 UART。USART 支持使用中断和DMA,可实现高速数据通信。

  1. 引脚
    TX:发送数据输出引脚。USB转TTL模块的TXD接单片机的RX引脚。
    RX:接收数据输入引脚。USB转TTL模块的RXD接单片机的TX引脚。
    VCC:供电,接单片机的3.3V或5V引脚。
    GND:地端,与单片机共地。

代码说明

  1. 图形配置

异步收发模式,八位字长,一位停止位,无奇偶校验位。
2. 重要语句
发送数据
HAL_UART_Transmit_IT(&huart1, Transmit_Databuf, 100)
功能为由单片机向串口即电脑发送数据,可在串口调试助手的接收区查看
接收数据
HAL_UART_Receive_IT(&huart1, Receive_Databuf, 10);
功能为单片机接收从串口即电脑发来的数据,可借助串口调试助手的发送区向单片机发送数据
注意:串口调试助手发送数据会自动给数据末位加上**‘\r\n’**,当发送数据的长度(包括换行符在内)超过HAL_UART_Transmit_IT(&huart1, Transmit_Databuf, 100)中设定的SIZE时,超过的数据无法接收;当长度(包括换行符在内)少于SIZE时,无法触发中断。可将该语句写在接收中断里,这样接收的数据不会丢失和混乱。
3. 具体代码
1. 中断回调函数
发送

void HAL_UART_TxCpltCallback(UART_HandleTypeDef *huart)
{/* Prevent unused argument(s) compilation warning */UNUSED(huart);HAL_UART_Transmit_IT(&huart1, Transmit_Databuf, 100);//单片机向电脑发送数据ms_Delay(100);m++;}

接收

void HAL_UART_RxCpltCallback(UART_HandleTypeDef *huart)
{/* Prevent unused argument(s) compilation warning */UNUSED(huart);for(i=0;i<10;i++){printf("%c",Receive_Databuf[i]);}printf("Finished\r\n");ms_Delay(300);n++;HAL_UART_Receive_IT(&huart1, Receive_Databuf, 10);
}
  1. 中断里使用的延时函数
void ms_Delay(uint16_t t_ms)
{uint32_t t=t_ms*3127;while(t--);
}
  1. 变量定义
uint8_t Transmit_Databuf[100];
uint8_t Receive_Databuf[10];
uint8_t n,m;
uint16_t i;

参考链接:https://blog.csdn.net/u010160335/article/details/84679260


DMA方式

  1. 图形配置

  1. 具体代码
    Normal模式下,只需将
    HAL_UART_Transmit_IT(&huart1, Transmit_Databuf, 100);
    替换为
    HAL_UART_Transmit_DMA(&huart1, Transmit_Databuf, 100);
    中断回调函数不变。
    Circular模式下,无需再在中断中添加
    ``HAL_UART_Transmit_DMA(&huart1, Transmit_Databuf, 100);`,
    因为一旦开始发送数据便会开启循环。

STM32 串口的使用相关推荐

  1. dma接收双缓存 stm32_容易被大多数人忽视的STM32串口DMA问题

    讨论三个问题: 1.什么叫串口DMA 请求: 2.串口简要复习: 3.串口DMA发送流程. 第一 什么叫串口DMA 请求(战舰STM32开发板) 说这个问题之前先简单回顾DMA的基本特性.先导出原子哥 ...

  2. STM32串口接收数据

    参考串口接收中断处理函数: //------------------------------------------------------------------ //函数名:void USART1 ...

  3. STM32串口第一个字节丢失问题的分析过程

    STM32串口发送必须先检测状态,否则第一个字节无法发出,发送完毕,必须检测发送状态是否完成,否则,发送不成功,使用stm32f10x调试串口通讯时,发现一个出错的现象,硬件复位重启之后,发送测试数据 ...

  4. STM32串口实时接收数据与所提前定义的比较,并作出相应的操作

    STM32串口实时接收数据与所提前定义的比较,并作出相应的操作 //typedef const uint16_t uc16; /*!< Read Only */uc16 BUF[10]={162 ...

  5. 向STM32串口发送数据的标准函数

    向STM32串口发送数据的标准函数 例子:1 void UART_Send_Message(u8 *Data,u8 lenth) {while(lenth--){USART_SendData(USAR ...

  6. STM32串口+DMA使用1

    STM32串口+DMA使用 STM32有5个串口资源(USART1,USART2,USART3及UART4,UART5).其中3个USART(通用同步/异步收/发器universalsynchrono ...

  7. stm32串口传输数据第一个数据被吞_stm32串口发送数据复位 第一个数据丢失

    http://blog.csdn.net/kevinhg/article/details/40991655 STM32串口发送必须先检测状态,否则第一个字节无法发出,发送完毕,必须检测发送状态是否完成 ...

  8. stm32串口通信(初学者对于串口通信的理解)

    stm32串口通信(初学者对于串口通信的理解) 标签: stm32串口通信单片机 2015-01-24 10:12 987人阅读 评论(0) 收藏 举报  分类: stm32 版权声明:本文为博主原创 ...

  9. stm32串口传输数据第一个数据被吞_STM32串口第一个字节丢失问题的分析过程

    STM32串口发送必须先检测状态,否则第一个字节无法发出,发送完毕,必须检测发送状态是否完成,否则,发送不成功,使用stm32f10x调试串口通讯时,发现一个出错的现象,硬件复位重启之后,发送测试数据 ...

  10. stm32串口通讯问题

    stm32串口通讯问题 在串口试验中,串口通讯不正常,则可能会出现以下问题: 1. 配置完成后,串口没有任何消息打印. 原因:1,端口配置有问题,需要重新检查I/O口的配置 2,接线有问题,检查接线是 ...

最新文章

  1. 【腾讯bugly干货分享】微信Android热补丁实践演进之路
  2. 冠军杜兰特和Deta比赛
  3. Altium Designer将Gerber转换为PCB文件教程
  4. day14 集合与函数
  5. 双机调试在线下载符号文件
  6. 【项目管理】ITTO-采购管理
  7. python中八进制_在Python中以八进制格式输入数字
  8. numpy.linspace()的使用方法
  9. git clone的速度慢到难以忍受问题的解决方法~
  10. 任意阶幻方解法及c++实现
  11. 活在迷茫中,不是活在当下
  12. 博弈论 -- 巴什博弈
  13. 用python画篮球场_Python可视化分析——科比整个职业生涯的投篮点分布
  14. c语言小游戏跳一跳代码及注释,c语言小游戏程序之弹跳小球的实现代码
  15. java excel checkbox_在Java窗体表格中插入复选框
  16. 报错 Duplicate keys detected
  17. 【日记本砸】21.04.16-31 他们身旁也有窗,却没有人向外眺望。
  18. 夏天我都冷到瑟瑟发抖-用单片机diy懒人挂脖风扇方案
  19. 3DMAX到底该如何布线?
  20. python处理问题汇总二(重复值索引,顺序读取文件,drop函数,数组元素排名)

热门文章

  1. Firefox 扩展插件
  2. jar包应该怎么打?
  3. 使用vue制作网页导航栏
  4. html 图片滑动验证码,selenium滑动验证码
  5. 中国76个量子比特计算机,再破纪录!中国科学家实现18个量子比特纠缠 为量子计算机奠基...
  6. Word表格跨页/翻页有边框,去除(>^ω^<)
  7. ArcEngine 中的-2147467259错误
  8. 如何将mp4视频制作成gif表情包
  9. C++继承以及菱形继承
  10. Hack The Box——Ready