这里会显示出您选择的修订版和当前版本之间的差别。
两侧同时换到之前的修订记录 前一修订版 后一修订版 | 前一修订版 | ||
icore4t_3 [2020/01/15 16:49] zgf [三、 实验原理] |
icore4t_3 [2022/03/22 10:38] (当前版本) sean |
||
---|---|---|---|
行 1: | 行 1: | ||
+ | |**银杏科技有限公司旗下技术文档发布平台** |||| | ||
+ | |技术支持电话|**0379-69926675-801** ||| | ||
+ | |技术支持邮件|Gingko@vip.163.com ||| | ||
+ | ^ 版本 ^ 日期 ^ 作者 ^ 修改内容 ^ | ||
+ | | V1.0 | 2020-01-15 | gingko | 初次建立 | | ||
+ | |||
+ | |||
+ | |||
+ | |||
===== STM32CubeMX教程三——UART通信实验 ===== | ===== STM32CubeMX教程三——UART通信实验 ===== | ||
行 54: | 行 63: | ||
==== 二、 实验设备及平台 ==== | ==== 二、 实验设备及平台 ==== | ||
- | - iCore4T 双核心板 | + | - iCore4T 双核心板[[https://item.taobao.com/item.htm?spm=a1z10.1-c.w4024-251734887.1.702b532fIH316i&id=610595120319&scene=taobao_shop|点击购买]] |
- | - JLINK(或相同功能)仿真器 | + | - JLINK(或相同功能)仿真器[[https://item.taobao.com/item.htm?spm=a1z10.5-c.w4002-251734908.13.36d92b617JpZ3V&id=554869837940|点击购买]] |
- Micro USB线缆 | - Micro USB线缆 | ||
- Keil MDK 开发平台 | - Keil MDK 开发平台 | ||
行 83: | 行 92: | ||
* 停止位:一个高电平。 | * 停止位:一个高电平。 | ||
* 本试验使用的芯片STM32H750IBKx,使用UART为USART_2,引脚位PD5和PD6,经过串口转USB芯片CH340转换后,可通过USB接口与计算机通讯。计算机安装 CH340 驱动后,可通过串口工具来接收串口发送的数据和向串口发送给数据。用串口工具打开iCore4T对应的端口,波特率设为115200,发送相应的命令,便可以控制ARM LED的亮灭情况。串口命令如下表: | * 本试验使用的芯片STM32H750IBKx,使用UART为USART_2,引脚位PD5和PD6,经过串口转USB芯片CH340转换后,可通过USB接口与计算机通讯。计算机安装 CH340 驱动后,可通过串口工具来接收串口发送的数据和向串口发送给数据。用串口工具打开iCore4T对应的端口,波特率设为115200,发送相应的命令,便可以控制ARM LED的亮灭情况。串口命令如下表: | ||
+ | |||
|LED_RED_ON\r\n |LED红灯亮| | |LED_RED_ON\r\n |LED红灯亮| | ||
|LED_RED_OFF\r\n |LED红灯灭| | |LED_RED_OFF\r\n |LED红灯灭| | ||
- | |LED_BLUE_ON\r\n |LED蓝灯亮| | + | |
- | |LED_BLUE_OFF\r\n |LED蓝灯灭| | + | |
- | |LED_GREEN_ON\r\n |LED绿灯亮| | + | |
- | |LED_GREEN_OFF\r\n |LED绿灯灭| | + | |
原理图如下图所示: | 原理图如下图所示: | ||
{{ :icore4t:icore4t_arm_hal_3_2.png?direct |}} | {{ :icore4t:icore4t_arm_hal_3_2.png?direct |}} | ||
行 184: | 行 191: | ||
* HAL_UART_Transmit_DMA();串口DMA模式发送 | * HAL_UART_Transmit_DMA();串口DMA模式发送 | ||
* HAL_UART_Transmit_DMA();串口DMA模式接收 | * HAL_UART_Transmit_DMA();串口DMA模式接收 | ||
- | * 串口发送数据 | + | |
+ | **串口发送数据** | ||
<code c> | <code c> | ||
HAL_UART_Transmit(UART_HandleTypeDef *huart, uint8_t *pData, uint16_t Size, uint32_t Timeout) | HAL_UART_Transmit(UART_HandleTypeDef *huart, uint8_t *pData, uint16_t Size, uint32_t Timeout) | ||
</code> | </code> | ||
**功能:**串口发送指定长度的数据。如果超时没发送完成,则不再发送,返回超时标志(HAL_TIMEOUT)。 | **功能:**串口发送指定长度的数据。如果超时没发送完成,则不再发送,返回超时标志(HAL_TIMEOUT)。 | ||
+ | |||
**参数:** | **参数:** | ||
+ | |||
UART_HandleTypeDef*huart UATR的别名 如: UART_HandleTypeDef huart2;别名就是huart2 | UART_HandleTypeDef*huart UATR的别名 如: UART_HandleTypeDef huart2;别名就是huart2 | ||
*pData 需要发送的数据 | *pData 需要发送的数据 | ||
Size 发送的字节数 | Size 发送的字节数 | ||
Timeout 最大发送时间,发送数据超过该时间退出发送 | Timeout 最大发送时间,发送数据超过该时间退出发送 | ||
+ | |||
**中断接收数据:** | **中断接收数据:** | ||
<code c> | <code c> | ||
行 199: | 行 210: | ||
</code> | </code> | ||
**功能:**串口中断接收,以中断方式接收指定长度数据。 | **功能:**串口中断接收,以中断方式接收指定长度数据。 | ||
+ | |||
大致过程:设置数据存放位置,接收数据长度,然后使能串口接收中断。接收到数据时,会触发串口中断。之后,串口中断函数处理,直到接收到指定长度数据,而后关闭中断,进入中断接收回调函数,不再触发接收中断。(只触发一次中断) | 大致过程:设置数据存放位置,接收数据长度,然后使能串口接收中断。接收到数据时,会触发串口中断。之后,串口中断函数处理,直到接收到指定长度数据,而后关闭中断,进入中断接收回调函数,不再触发接收中断。(只触发一次中断) | ||
+ | |||
**参数:** | **参数:** | ||
+ | |||
UART_HandleTypeDef *huart UATR的别名 | UART_HandleTypeDef *huart UATR的别名 | ||
*pData 接收到的数据存放地址 | *pData 接收到的数据存放地址 | ||
Size 接收的字节数 | Size 接收的字节数 | ||
+ | |||
4. 串口中断函数 | 4. 串口中断函数 | ||
<code c> | <code c> | ||
行 221: | 行 236: | ||
**串口接收中断回调函数** | **串口接收中断回调函数** | ||
+ | |||
<code c> | <code c> | ||
HAL_UART_RxCpltCallback(UART_HandleTypeDef *huart); | HAL_UART_RxCpltCallback(UART_HandleTypeDef *huart); | ||
行 226: | 行 242: | ||
**功能:**HAL库的中断进行完之后,并不会直接退出,而是会进入中断回调函数中,用户可以在其中设置代码,串口中断接收完成之后,会进入该函数,该函数为空函数,用户需自行修改。 | **功能:**HAL库的中断进行完之后,并不会直接退出,而是会进入中断回调函数中,用户可以在其中设置代码,串口中断接收完成之后,会进入该函数,该函数为空函数,用户需自行修改。 | ||
- | **参数:** | + | |
+ | **参数:**\\ | ||
UART_HandleTypeDef *huart UATR的别名 | UART_HandleTypeDef *huart UATR的别名 | ||
+ | |||
**串口中断处理函数** | **串口中断处理函数** | ||
+ | |||
<code c> | <code c> | ||
HAL_UART_IRQHandler(UART_HandleTypeDef *huart); | HAL_UART_IRQHandler(UART_HandleTypeDef *huart); | ||
</code> | </code> | ||
**功能:**对接收到的数据进行判断和处理 判断是发送中断还是接收中断,然后进行数据的发送和接收,在中断服务函数中使用 | **功能:**对接收到的数据进行判断和处理 判断是发送中断还是接收中断,然后进行数据的发送和接收,在中断服务函数中使用 | ||
+ | |||
**串口查询函数** | **串口查询函数** | ||
+ | |||
<code c> | <code c> | ||
HAL_UART_GetState(); | HAL_UART_GetState(); |