STM32F429串口设置调试笔记
USART3 外接 RS485
UART7 外接 RS232
//USART支持同步傳輸,UART只支持異步傳輸,其他一樣,備注一下
//本例程都做異步傳輸
1-5步在main.c文件中
1、STM32CubeMX自動(dòng)生成
2、新增接收緩沖區(qū)
u8 aRxBuffer_uart3[64]={0}; u8 aRxBuffer_uart7[64]={0};3、STM32CubeMX自動(dòng)生成
static void MX_UART7_Init(void); static void MX_USART3_UART_Init(void);4、STM32CubeMX自動(dòng)生成
int main(void) {......MX_UART7_Init();MX_USART3_UART_Init();...... }5、STM32CubeMX自動(dòng)生成
static void MX_UART7_Init(void) {/* USER CODE BEGIN UART7_Init 0 *//* USER CODE END UART7_Init 0 *//* USER CODE BEGIN UART7_Init 1 *//* USER CODE END UART7_Init 1 */huart7.Instance = UART7;huart7.Init.BaudRate = 115200;huart7.Init.WordLength = UART_WORDLENGTH_8B;huart7.Init.StopBits = UART_STOPBITS_1;huart7.Init.Parity = UART_PARITY_NONE;huart7.Init.Mode = UART_MODE_TX_RX;huart7.Init.HwFlowCtl = UART_HWCONTROL_NONE;huart7.Init.OverSampling = UART_OVERSAMPLING_16;if (HAL_UART_Init(&huart7) != HAL_OK){Error_Handler();}/* USER CODE BEGIN UART7_Init 2 */HAL_UART_Receive_IT(&huart7, (u8 *)aRxBuffer_uart7, 1);**//開(kāi)啟接收中斷,如果沒(méi)有自動(dòng)生成就要自己加入**/* USER CODE END UART7_Init 2 */} static void MX_USART3_UART_Init(void) {/* USER CODE BEGIN USART3_Init 0 *//* USER CODE END USART3_Init 0 *//* USER CODE BEGIN USART3_Init 1 *//* USER CODE END USART3_Init 1 */huart3.Instance = USART3;huart3.Init.BaudRate = 115200;huart3.Init.WordLength = UART_WORDLENGTH_8B;huart3.Init.StopBits = UART_STOPBITS_1;huart3.Init.Parity = UART_PARITY_NONE;huart3.Init.Mode = UART_MODE_TX_RX;huart3.Init.HwFlowCtl = UART_HWCONTROL_NONE;huart3.Init.OverSampling = UART_OVERSAMPLING_16;if (HAL_UART_Init(&huart3) != HAL_OK){Error_Handler();}/* USER CODE BEGIN USART3_Init 2 */HAL_UART_Receive_IT(&huart3, (u8 *)aRxBuffer_uart3, 1);// 即Size設(shè)置為1,只接收1Byte數(shù)據(jù),在每次中斷結(jié)束后重新配置來(lái)使能中斷。/* USER CODE END USART3_Init 2 */}6、STM32CubeMX自動(dòng)生成,如果沒(méi)有自己加入
stm32f4xx.hal.msp.c文件中
void HAL_UART_MspDeInit(UART_HandleTypeDef* huart)函數(shù)中如果沒(méi)有自動(dòng)生成,加入:
HAL_NVIC_DisableIRQ(UART7_IRQn);
HAL_NVIC_DisableIRQ(USART3_IRQn);
這個(gè)不是必須的,不寫(xiě)也不影響.
7、STM32CubeMX自動(dòng)生成,如果沒(méi)有自己加入
stm32f4xx.it.c文件中
8、重寫(xiě)接收中斷回調(diào)函數(shù),測(cè)試
main.c中
9、發(fā)送測(cè)試,這段代碼可以放在main.c文件main()函數(shù)while(1){}中,或其他定時(shí)或外部中斷函數(shù)中測(cè)試
static int TEAT_num=0; TEAT_num++; // printf("ttest = %x\n", TEAT_num);//測(cè)試OK RS485_OUT=1;//485輸出 delay_us(20);//10us會(huì)有錯(cuò)誤,485外部硬件電路不同,延時(shí)時(shí)間可能不同 HAL_UART_Transmit(&huart3, (uint8_t *)&TEAT_num, 1, 0xFFFF);//huart3 485 while(__HAL_UART_GET_FLAG(&huart3,UART_FLAG_TC)!=SET);//等待發(fā)送完成 RS485_OUT=0;//485輸入 HAL_UART_Transmit(&huart7, (uint8_t *)&TEAT_num, 4, 0xFFFF);//huart7 串口 while(__HAL_UART_GET_FLAG(&huart7,UART_FLAG_TC)!=SET);//等待發(fā)送完成10、如果用printf 打印輸出數(shù)據(jù)
則重定義int fputc(int ch, FILE *f);函數(shù)
總結(jié)
以上是生活随笔為你收集整理的STM32F429串口设置调试笔记的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 教你用Axure RP 9 设计手机AP
- 下一篇: 初学ZYNQ(理论准备)