|
1:
typedef enum {RESET = 0, SET = !RESET} FlagStatus, ITStatus;
if(USART_GetITStatus(UART4, USART_IT_RXNE) != RESET).......這一句中的(USART_GetITStatus(UART4, USART_IT_RXNE))發(fā)生中斷時(shí),就應(yīng)該是是if(1!=RESET,執(zhí)行這個(gè)if里面的中斷服務(wù)函數(shù)。
2:
void Usart4_SendString里USART_TypeDef * pUSARTx,他是怎么找到USART4發(fā)送數(shù)據(jù)的,這里只是定義一個(gè)新的指針名,我看USART_TypeDef里面并沒(méi)有串口4的定義。
typedef struct//USART_TypeDef的定義
{
__IO uint16_t SR;
uint16_t RESERVED0;
__IO uint16_t DR;
uint16_t RESERVED1;
__IO uint16_t BRR;
uint16_t RESERVED2;
__IO uint16_t CR1;
uint16_t RESERVED3;
__IO uint16_t CR2;
uint16_t RESERVED4;
__IO uint16_t CR3;
uint16_t RESERVED5;
__IO uint16_t GTPR;
uint16_t RESERVED6;
}
void Usart4_SendByte( USART_TypeDef * pUSARTx, u8 ch)
{
/* 發(fā)送一個(gè)字節(jié)數(shù)據(jù)到USART */
USART_SendData(pUSARTx,ch);
/* 等待發(fā)送數(shù)據(jù)寄存器為空 */
while (USART_GetFlagStatus(pUSARTx, USART_FLAG_TXE) == RESET)
{
;
}
}
/************************************************************
程序功能:串口4發(fā)送字符串
void Usart4_SendString( USART_TypeDef * pUSARTx, char *str)
{
unsigned int k=0;
do
{
Usart4_SendByte( pUSARTx, *(str + k) );
k++;
}
while(*(str + k)!='\0');
/* 等待發(fā)送完成 */
while(USART_GetFlagStatus(pUSARTx,USART_FLAG_TC)==RESET)
{}
}
/************************************************************
程序功能:串口4發(fā)送一個(gè)16位數(shù)
void Usart4_SendHalfWord( USART_TypeDef * pUSARTx, u16 ch)
{
uint8_t temp_h, temp_l;
/* 取出高八位 */
temp_h = (ch&0XFF00)>>8;
/* 取出低八位 */
temp_l = ch&0XFF;
/* 發(fā)送高八位 */
USART_SendData(pUSARTx,temp_h);
while (USART_GetFlagStatus(pUSARTx, USART_FLAG_TXE) == RESET)
{
;
}
/* 發(fā)送低八位 */
USART_SendData(pUSARTx,temp_l);
while (USART_GetFlagStatus(pUSARTx, USART_FLAG_TXE) == RESET)
{
;
}
}
/************************************************************
程序功能:重定向c庫(kù)函數(shù)printf到串口,重定向后可使用printf函數(shù)
int fputc(int ch, FILE *f)
{
/* 發(fā)送一個(gè)字節(jié)數(shù)據(jù)到串口 */
USART_SendData(DEBUG_USART4, (uint8_t) ch);
/* 等待發(fā)送完畢 */
while (USART_GetFlagStatus(DEBUG_USART4, USART_FLAG_TXE) == RESET)
{
;
}
return (ch);
}
/************************************************************
程序功能:重定向c庫(kù)函數(shù)scanf到串口,重寫向后可使用scanf、getchar等函數(shù)
int fgetc(FILE *f)
{
/* 等待串口輸入數(shù)據(jù) */
while (USART_GetFlagStatus(DEBUG_USART4, USART_FLAG_RXNE) == RESET)
{
;
}
return (int)USART_ReceiveData(DEBUG_USART4);
}
|
|