【STM32F746 Nucleo】 MxCube开发串口通讯
[复制链接]
因为该开发板是官方设计推出的,顾在工具软中有开发板的资源,可以直接选择当前使用的开发板。
-
- 时钟配置
可以根据自己的实际情况进行选择始终频率。最大始终频率是216MHz
-
- 时钟源配置
此环境下已经进行了配置,检查一下即可。
-
- SYS设置Debug
选择的是 SW模式
-
- 串口配置
涉及波特率设置,引脚设置和中断设置
1.6代码生成
在此埋个伏笔,下一篇内容简单描述一下。
二、keil工程
2.1.CubeMX生成的(MDK)keil工程
2.2、原理图引脚
2.3、串口实现
CubeMX软件,通过图像化的方式,生成HAL库程序代码,HAL库程序代码较标准库具有很大的区别。
void HAL_UART_RxCpltCallback(UART_HandleTypeDef *huart)
比如此行代码,是串口放回数据的函数,底层到都是采用中断的方式处理,但边准库采用的是直接中断调用的方式,HAL库采用的是回调函数的方式。HAL的设计理念其实更好用。
1.添加接收和发送函数代码
-
-
-
-
- void Usart2_Send( char *str,uint8_t strlen)
-
- {
-
- unsigned int k=0;
-
- do
-
- {
-
- HAL_UART_Transmit(&huart2,(uint8_t *)(str + k),1,1000);
-
- k++;
-
- } while(k < strlen);
-
-
-
-
-
- }
-
-
-
- void Usart3_Send( char *str,uint8_t strlen)
-
- {
-
- unsigned int k=0;
-
- do
-
- {
-
- HAL_UART_Transmit(&huart3,(uint8_t *)(str + k),1,1000);
-
- k++;
-
- } while(k < strlen);
-
-
-
-
-
- }
-
-
-
-
-
- void HAL_UART_RxCpltCallback(UART_HandleTypeDef *huart)
-
- {
-
-
-
- if(huart->Instance == USART2)
-
- {
-
-
-
- if(Uart2_Rx_Cnt > 254)
-
- {
-
- Uart2_Rx_Cnt = 0;
-
- memset(RxBuffer_2,0x00,sizeof(RxBuffer_2));
-
-
-
- }
-
- else
-
- {
-
- RxBuffer_2[Uart2_Rx_Cnt++] = aRxBuffer_2;
-
-
-
- }
-
- HAL_UART_Receive_IT(&huart2, (uint8_t *)&aRxBuffer_2, 1);
-
- }else if(huart->Instance == USART3)
-
- {
-
-
-
- if(Uart3_Rx_Cnt > 254)
-
- {
-
- Uart3_Rx_Cnt = 0;
-
- memset(RxBuffer_3,0x00,sizeof(RxBuffer_3));
-
- }
-
- else
-
- {
-
- RxBuffer_3[Uart3_Rx_Cnt++] = aRxBuffer_3;
-
-
-
-
-
- }
-
- HAL_UART_Receive_IT(&huart3, (uint8_t *)&aRxBuffer_3, 1);
-
-
-
- }
-
-
-
- UNUSED(huart);
-
- }
- 添加H文件声明代码
- extern void Usart2_Send( char *str,uint8_t strlen);
-
- extern void Usart2_Send( char *str,uint8_t strlen);
- 添加定义数字代码
- uint8_t aRxBuffer_2 = 0;
-
- uint8_t aRxBuffer_3 = 0;
-
- unsigned char aRxBuffer_hlp = 0;
-
- unsigned char Uart2_Rx_Cnt = 0;
-
- unsigned char Uart3_Rx_Cnt = 0;
-
- unsigned char RxBuffer_2[RXBUFFERSIZE];
-
- unsigned char RxBuffer_3[RXBUFFERSIZE];
-
- unsigned char hlpUart1_Rx_Cnt =0;
-
- unsigned char RxBuffer_hlp[RXBUFFERSIZE];
2.4、串口通讯测试
|