作者:蓝月亮乐悠悠 | 来源:互联网 | 2023-10-10 09:20
1.配置引脚原理图上串口的两个引脚为PA9、PA102.代码实现注意:TMD系统时钟配置函数SystemClock_Config();最好是放在main函数开头的位
1.配置引脚
原理图上串口的两个引脚为PA9、PA10
2.代码实现
注意:
TMD系统时钟配置函数SystemClock_Config();
最好是放在main函数开头的位置,放在所有其他模块init函数之前,要不然tmd会产生非常玄学的问题,比如串口发送的是乱码,还尼玛死活看不出来。
void Uart_Func()
{if (uwTick - Uart_Delay_uwTick < 1000) return; Uart_Delay_uwTick &#61; uwTick;sprintf(str, "hello,world!\r\n");HAL_UART_Transmit(&huart1, (unsigned char *)str, strlen(str), 50);
}
USART1_Init();HAL_UART_Receive_IT(&huart1, rec_str, 1);void HAL_UART_RxCpltCallback(UART_HandleTypeDef *huart)
{Led_Disp(0xaa);HAL_Delay(300);Led_Disp(0x00);HAL_UART_Receive_IT(&huart1, rec_str, 1);
}
3. 注意事项
如果在串口中断里面调用HAL_Delay()
函数&#xff0c;则串口中断的优先级必须比滴答定时器的优先级低&#xff1b;因为HAL_Delay()
函数是由滴答定时器写的&#xff0c;如果串口优先级比滴答定时器优先级高&#xff0c;则程序会卡住
HAL_NVIC_SetPriority(USART1_IRQn, 1, 0);
HAL_NVIC_SetPriority(SysTick_IRQn, TickPriority, 0U);
滴答定时器优先级怎么找&#xff1f;&#x1f447;