发送中断
main.c
int main(void)
{
HAL_Init();
SystemClock_Config();
MX_GPIO_Init();
MX_USART1_UART_Init();
HAL_UART_Transmit_IT(&huart1,"新年好",sizeof("新年好"));//发送字符串后,产生一个中断
while (1)
{
}
}
usart.c
int fputc(int ch,FILE *f)
{
while(!(USART1->ISR & 1<<7)){};
USART1->TDR =ch;
return ch;
}
void HAL_UART_TxCpltCallback(UART_HandleTypeDef *huart)
{
if(huart1.Instance ==USART1)
{
printf("恭喜发财");
}
}
效果:
向串口发送一个字符串,产生中断,打印“恭喜发财”(向串口发送“恭喜发财”)。
接收中断
main.c
uint8_t buf[10]={"0"};
while (1)
{
HAL_UART_Receive_IT(&huart1, buf,1);//第三个参数是设置接受多少个字符产生中断,当接收到的字符达到这个个数时才会产生中断
printf("%s",buf);
memset(buf,0,sizeof(buf));
HAL_Delay(300);
}
usart.c
int fputc(int ch,FILE *f)
{
while(!(USART1->ISR & 1<<7)){};
USART1->TDR =ch;
return ch;
}
void HAL_UART_RxCpltCallback(UART_HandleTypeDef *huart)
{
if(huart1.Instance ==USART1)
{
printf("新年快乐\n");
}
}
效果:
串口向stm32发送字符串,接受的字符串达到第三个参数的大小时产生中断。向串口发送“新年快乐\n”