亲测的代码:在主程序中调用Send_to_PC();
以下是中断处理函数,因为我把中断向量表移到RAM里了,所以初始化USART那些不太一样,我就不贴了,
基本过程就是RCC电源打开,GPIO端口复用打开,中断向量表跳转,USART初始化,使能,除了TXE,TE中断使能- #define SEND_LENGTH 12
- u32 Send_Length=0;
- u8 Send_Data[SEND_LENGTH] = "abcdefg\n\r";
- void Send_to_PC(void)
- {
- //设置好Send_Data[SEND_LENGTH]数组
-
-
- //打开发送中断
- USART_ITConfig(USART1, USART_IT_TXE, ENABLE);
-
- }
- void UART1Handler(void)
- {
- //OSIntEnter();
- //处理接收到的数据
- if(USART_GetITStatus(USART1, USART_IT_RXNE) != RESET)
- {
-
- USART_ClearITPendingBit(USART1, USART_IT_RXNE);
- }
- //发送中断
- if (USART_GetITStatus(USART1, USART_IT_TXE) != RESET)
- {
- USART_SendData(USART1, Send_Data[Send_Length++]);
- if (Send_Length==SEND_LENGTH)
- {
- //发送字节结束
- USART_ClearITPendingBit(USART1,USART_IT_TXE);
- USART_ITConfig(USART1, USART_IT_TXE, DISABLE);
- USART_ITConfig(USART1, USART_IT_TC, ENABLE);
- Send_Length = 0;
- }
- }
- //发送完成
- if (USART_GetITStatus(USART1, USART_IT_TC) != RESET)
- {
- USART_ClearITPendingBit(USART1,USART_IT_TC);
- USART_ITConfig(USART1, USART_IT_TC, DISABLE);
- }
- //OSIntExit();
- }
|