說實話STM8確實用起來比較方便,雖然網上的資料不多,但是在各大論壇都可以找到自己想要的東西,下面說說我在使用時遇到的問題和應該注意的事項,,
我在使用是用的是庫函數。
1:先配置端口:
GPIO_Init(LEDS_PORT, ( TX ), GPIO_MODE_OUT_PP_LOW_FAST);
GPIO_Init(LEDS_PORT, ( RX ) , GPIO_MODE_IN_PU_NO_IT );
注意:在開始的時后程序寫完后一直出現接收不到數據,在網上問了許多人,然后才發先原來是沒有把,接收端口配置成接收狀態,也有人說不用配置,直接用就接收到數據,但是我的實在實現不了。
2:函數初始化:
void Uart_Init(void)
{
//UART1_DeInit();
UART1_Init((u32) 9600, UART1_WORDLENGTH_8D, UART1_STOPBITS_1,
UART1_PARITY_NO , UART1_SYNCMODE_CLOCK_DISABLE , UART1_MODE_TXRX_ENABLE);
UART1_ITConfig(UART1_IT_RXNE_OR,ENABLE );
UART1_Cmd(ENABLE );
}
注意:這個初始化的函數應在時鐘函數初始化之后,因為Uart_Init():在調用時使用了關于時鐘的一些參數,因為我們經常會在工程中切換函數,這樣會對發送和接收數據造成影響。。
3 :接收 ,我么可以在主函數中接收,也可以在串口中斷中接收數據。。
@far @interrupt void UART_RI (void)
{
disableInterrupts();
if(UART1_GetITStatus(UART1_IT_RXNE )!= RESET)
{
Res =UART1_ReceiveData8()-0x30;
}
//UART1_SendByte( keycounter);
UART1_SendByte(1);
UART1_SendByte(2);
UART1_SendByte(3);
UART1_SendByte(4);
//data_Analysis_1();
enableInterrupts();
}
這是我在使用時遇到的一些問題