使用printf打印信息并在串口助手上显示
printf("Hello World!");内部调用的一个函数fputc,如果没有fputc这个函数,送信息的时候不是送到这个串口上,而是送到其他设备去了。
int fputc(int ch,FILE *f)
{
uint8_t temp =ch;
HAL_UART_Transmit(&huart1,&temp,1,10);
return ch;
}
空闲中断和不定长数据接收实验
实验任务:使用GD32串口0(STM32串口1)接收PC端串口助手发送过来的不定长的数据。
void USART1_IRQHandler(void)
{
/* USER CODE BEGIN USART1_IRQn 0 */
uint16_t br = 0;
uint16_t temp = USART1->SR;//状态寄存器的值
if(temp & (1<<5))
{
if(rxlencnt < LEN)
{
rxbuf[rxlencnt] = USART1->DR&0x1ff;
rxlencnt++;
}
else
{
rxlencnt = 0;
memset(rxbuf,0,LEN);
}
USART1->SR &= ~(1<<5);//将状态寄存器的值清零
}else
if(temp & (1<<4))//检测到了空闲线路
{
flag=1;
br = USART1->DR;
USART1->SR &= ~(1<<4);
}
/* USER CODE END U