这里会显示出您选择的修订版和当前版本之间的差别。
| 两侧同时换到之前的修订记录 前一修订版 后一修订版 | 前一修订版 | ||
|
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(); | ||