| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 嵌入式 -> STM32CubeIDE学习笔记——USART(三种收发方式,printf重定向,工程配置) -> 正文阅读 |
|
[嵌入式]STM32CubeIDE学习笔记——USART(三种收发方式,printf重定向,工程配置) |
目录 1.串口配置?菜单中选中使用串口1进行通信 ?选择串口模式,异步同步或单线半双工通信模式 常用异步通信,即只有rx和tx两根数据线,如使用同步通信,则多一根SCK时钟线。 ?下方选择设置串口通信波特率,数据位,奇偶校验位,停止位。 ?如需使用串口中断发送则在此处打勾。然后生成工程文件。 ?在项目——属性中点击Settings,如下图,如果需要输出浮点数,红框打勾。 2.printf重定向两种方法实现重定向(第二种亲测可用,第一种测试过会报错,仅供参考) 首先main.c中添加头文件
第一种方法:在USER CODE BEGIN PFP后加入
第二种:?在USER CODE BEGIN PFP后加入
然后while(1)中使用printf即可。 3.常用串口输出接收函数3.1? 轮询/中断串口发送函数HAL_UART_Transmit() 轮询方式发送函数,数据发送完之前只能执行此函数,或超时后函数执行结束。
HAL_UART_Transmit_IT() 中断方式发送函数,可在发送数据时执行其他函数,可不加延时。此函数需要开启串口中断才可使用。
3.2?轮询/中断串口接收函数HAL_UART_Receive()? 轮询接收函数,在接收时只能等待到接收完成,才可进行下一步动作。 定义三个长度的数组,当接收到3个长度的数据或等待时间超过200毫秒,将接收的数据发送出来。
HAL_UART_Receive_IT()? 中断接收函数,有数据了才会读取,无数据时正常工作。 注意:数据必须和数组中定义的长度相同才可,否则无法进入中断回调函数。回车换行会占用两个长度!!!!
中断回调函数?
3.3? DMA串口接收发送函数DMA为硬件为RAM与I/O外设数据交换直接通道,可使CPU效率大幅度提高。 DMA需要使用中断,工程配置方法和上文中断接收发送方法相同。 DMA配置时不同为需要设置模式,normal为单次传输,只进行一次数据传输;circular为循环传输,开启后循环发送数据。 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 添加DMA接口,以及选择接口传输模式 HAL_UART_Transmit_DMA()? DMA数据发送函数,参数为串口通道,发送数据,数据长度。
HAL_UART_Receive_DMA()? DMA数据接收函数,参数与发送函数相同。
开启接收函数?
开启中断回调函数?
|
|
嵌入式 最新文章 |
基于高精度单片机开发红外测温仪方案 |
89C51单片机与DAC0832 |
基于51单片机宠物自动投料喂食器控制系统仿 |
《痞子衡嵌入式半月刊》 第 68 期 |
多思计组实验实验七 简单模型机实验 |
CSC7720 |
启明智显分享| ESP32学习笔记参考--PWM(脉冲 |
STM32初探 |
STM32 总结 |
【STM32】CubeMX例程四---定时器中断(附工 |
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/25 22:43:18- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |