[边缘智能开发-反客科技STM32H743IIT6]-UART串口通讯与重定向-轮询/中断/DMA不定长多模式驱动文件编写

供稿:hz-xin.com     日期:2025-01-18
本文记录了使用反客科技 STM32H743IIT开发板,结合CUBEMX配置和KEIL编程进行边缘智能开发的全过程,重点讲解了UART串口通讯与重定向驱动文件的编写。特别关注了轮询、中断和DMA三种模式下的驱动文件编写,旨在提供一种实用的串口通讯解决方案。首先,建议读者熟悉STM32CUBEMX软件与KEIL的安装环境,以便后续操作。以下是对各部分的详细解释和步骤:

### 前置配置

使用STM32CUBEMX进行项目基本配置,可参考已有的配置项目或直接复制配置文件中的ioc部分。设置USART1作为串口接口,并将PA9配置为TX端口,PA10配置为RX端口。

### 硬件电路

电路设计中,PA9作为串口发送端,PA10作为串口接收端。在CUBEMX中设置相应的引脚。

### CUBEMX配置

配置复杂程度从轮询模式、中断模式到DMA模式递进,选择需要的模式进行配置。基本配置适用于轮询、中断和DMA模式,中断配置需要启用全局中断并设置中断优先级,确保符合功能需求。DMA配置则需在USART界面启用DMA,并设置通道,注意接收端不设为循环模式避免消息回显问题。完成配置后,生成代码并打开KEIL进行项目编译。

### 重定向printf和scanf函数

C语言中,通过重定向底层库中的printf和scanf函数,将其与单片机的串口输入输出进行关联,实现与上位机或其它设备的通讯。实现方式是通过在main.c文件中定义自定义区间,重写fputc和fgetc函数指针,以实现重定向。注意在生成目标设置中勾选MicroLib选项。

### 驱动文件框架准备

为了提高代码的可移植性和组织性,创建iusart.h和iusart.c文件分别作为头文件和源文件,用于管理驱动的相关定义、参数和函数。

### 通讯模式详解

#### 轮询模式通讯
轮询模式是单片机主动查询相关寄存器的状态,进行串口信息收发。该模式较为传统,但在高频率数据处理中效率较低,不推荐使用。

#### 中断模式通讯
中断模式类似于用户在看电视时突然接收到厨房水开的提醒,从而中断当前活动并处理该事件。对于串口通讯,信息输入和输出都可以通过中断实现,提高效率。

#### DAM模式通讯(IDLE不定长)
DAM模式,即直接存储访问,通过DMA控制器在存储器和外设之间高效传输数据,无需CPU介入,尤其适用于大容量数据传输。接收数据时,配合串口空闲中断(IDLE)实现不定长数据的输入。

### 完整代码与驱动文件

驱动文件的代码注释提供了详细的实现逻辑。iusart.h文件定义了驱动的接口和参数,iusart.c文件实现了相关函数。main.c文件包含主程序和初始化部分,与驱动文件协同工作。

### 结语

通过本文的介绍,您可以完成串口通讯驱动的独立配置,适用于边缘智能开发中的UART串口通讯需求。如果您使用的是类似CUBEMX的配置环境,以上文件可直接应用于项目中。欢迎关注个人GitHub和博客,获取更多相关资源。

[边缘智能开发-反客科技STM32H743IIT6]-新建项目与基本配置+点灯_百度...
本系列记录了使用反客科技STM32H743IIT6开发板进行边缘智能开发的全过程,开发环境采用CUBEMX进行配置并结合KEIL进行编程。本文将聚焦于新建项目与基本配置,以及如何通过点亮LED灯来验证系统运行情况。在开始开发之前,确保STM32CubeMX软件与KEIL已正确安装。接下来,我们将按照以下步骤进行:新建项目与配置过...

[边缘智能开发-反客科技STM32H743IIT6]-UART串口通讯与重定向-轮询\/中 ...
本文记录了使用反客科技 STM32H743IIT开发板,结合CUBEMX配置和KEIL编程进行边缘智能开发的全过程,重点讲解了UART串口通讯与重定向驱动文件的编写。特别关注了轮询、中断和DMA三种模式下的驱动文件编写,旨在提供一种实用的串口通讯解决方案。首先,建议读者熟悉STM32CUBEMX软件与KEIL的安装环境,以便后续操作...

[边缘智能开发-反客科技STM32H743IIT6]-CMSIS-NN神经网络库移植_百度知 ...
在这个系列中,我们将通过反客科技STM32H743IIT6开发板,详细介绍CMSIS-NN神经网络库的移植过程,特别是针对CUBEMX配置和KEIL编程环境。首先,确保已经完成了CMSIS-DSP的移植,因为CMSIS-NN库依赖于它进行计算。移植CMSIS-NN库有两种途径:一是利用KEIL内置的运行时管理插件导入,但这可能不包含最新的功能...

[边缘智能开发-反客科技STM32H743IIT6]-FMC与SDRAM
本文记录了使用反客科技STM32H743IIT6开发板进行边缘智能开发的全过程。重点在于基于FMC(Flexible Memory Controller)控制SDRAM(Synchronous Dynamic Random Access Memory)的实际操作与实践。FSMC(Flexible Static Memory Controller)是STM32微控制器中的一个外设模块,用于连接和管理外部静态存储器设备,如...

[边缘智能开发-基于STM32]-串口打印功能设置-PRINTF
使其通过串口输出,利用了函数重名的特性。在主函数中,我们写入printf进行测试,例如每秒输出一次特定信息,以此验证串口打印功能的正常工作。总的来说,本文详细介绍了如何使用STM32、CUBEMX和KEIL工具进行串口打印功能的设置,这对于调试和结果展示极其实用。希望本系列文章能对你有所帮助。

采用智能传感器处理单元的IMU,利用边缘AI完成决策制定
嵌入式应用开发者无需精通数据科学,借助NanoEdge AI Studio即可对ISPU(ISM330ISN)进行编程。借助STM32开放式开发环境,结合MEMS传感器与STM32 32位MCU系列,开发基于MEMS的应用变得更加简单、灵活。为了支持ISPU编程,提供了包含库和第三方工具\/IDE的生态系统,即使是复杂的AI模型也能轻松实现。专业MEMS工具...

物联网工程专业怎么样
人工智能 (AI) 技术通常用于实时解释和响应一些人对机器和机器对机器的数据流。AI 和 IoT 两种技术的融合催生了 AIoT 的概念,即将 AI 技术嵌入到 IoT 组件中。将连接的传感器和执行器收集的数据与 AI 相结合,可以在边缘减少延迟、增加隐私和实时智能。这也意味着需要在云服务器上发送和存储的数据...

兄弟我想学习嵌入式开发,请问韦东山的教程和视频怎么样呀?
国嵌老谢老NB了,态度极差 1、视频讲的不深、死板、项目视频几乎毫无价值是垃圾;2、服务很差,QQ什么服务都是虚设的,还不能批评老师,批评直接拉黑;3、购买视频后几乎是一次性生意,如果你要电脑后重新索要账户密码,各种理由不给拖着,淘宝投诉国嵌时候,他们就用其他不同日期交易的客户或者自己的...