void UART1_Configuration(void)
{
USART_InitTypeDef USART_InitStructure;
USART_InitStructure.USART_BaudRate = 9600;
USART_InitStructure.USART_WordLength = USART_WordLength_8b;
USART_InitStructure.USART_StopBits = USART_StopBits_1;
USART_InitStructure.USART_Parity = USART_Parity_No ;
USART_InitStructure.USART_HardwareFlowControl = USART_HardwareFlowControl_None;
USART_InitStructure.USART_Mode = USART_Mode_Rx | USART_Mode_Tx;
USART_Init(USART1, &USART_InitStructure);
USART_ITConfig(USART1, USART_IT_RXNE, ENABLE);
USART_Cmd(USART1, ENABLE);
}
發送一個字符
u8 Uart1_PutChar(u8 ch)
{
USART_SendData(USART1, (u8) ch);
while(USART_GetFlagStatus(USART1, USART_FLAG_TXE) == RESET)
{
}
return ch;
}
發送一個字符串
void Uart1_PutString(u8* buf , u8 len)
{
for(u8 i=0;i{
Uart1_PutChar(*buf++);
}
}
如果UART使用中斷發送數據 則需要修改stm32f10x_it.c 中的串口中斷函數 并且需要修改void NVIC_Configuration(void)函數
在中斷里面的處理 原則上是需要簡短和高效 下面的流程是 如果接收到255個字符或者接收到回車符 則關閉中斷 并且把標志位UartHaveData 置1
void USART1_IRQHandler(void)
{
if(USART_GetITStatus(USART1, USART_IT_RXNE) != RESET)
{
RxBuffer[ RxCounter ] = USART_ReceiveData(USART1);
if( RxCounter == 0xfe || == RxBuffer[ RxCounter ] )
{
USART_ITConfig(USART1, USART_IT_RXNE, DISABLE);
RxBuffer[ RxCounter ] =
主站蜘蛛池模板:
黄浦区|
金华市|
呼图壁县|
托克逊县|
宣威市|
长治县|
濉溪县|
孝昌县|
黎城县|
报价|
定兴县|
克什克腾旗|
湄潭县|
孝昌县|
涟源市|
抚远县|
凤城市|
司法|
高平市|
广南县|
遂平县|
阜宁县|
和静县|
镇远县|
溧水县|
合阳县|
滨海县|
年辖:市辖区|
蓝山县|
朝阳县|
远安县|
墨玉县|
扬州市|
高密市|
武宣县|
海丰县|
宜良县|
洪雅县|
井研县|
四会市|
白玉县|