我已经将寄存器的调通了,想同时学一下库函数,可是怎么都接收不到数据。
[mw_shl_code=c,true]void USART1_Init(u32 bound)
{
GPIO_InitTypeDef GPIO_InitStructure;
USART_InitTypeDef USART_InitStructure;
RCC_APB2PeriphClockCmd(RCC_APB2Periph_USART1 | RCC_APB2Periph_GPIOA, ENABLE);
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_9;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_Init(GPIOA, &GPIO_InitStructure);
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_10;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;
GPIO_Init(GPIOA, &GPIO_InitStructure);
USART_InitStructure.USART_BaudRate = bound;
USART_InitStructure.USART_WordLength = USART_WordLength_9b;
USART_InitStructure.USART_StopBits = USART_StopBits_1;
USART_InitStructure.USART_Parity = USART_Parity_Even ;
USART_InitStructure.USART_HardwareFlowControl = USART_HardwareFlowControl_None;
USART_InitStructure.USART_Mode = USART_Mode_Rx | USART_Mode_Tx;
USART_Init(USART1, &USART_InitStructure);
USART_Cmd(USART1, ENABLE);
}
u8 USART_RXCNT=6;
u8 USART_RXBUF[32];
/***********************************************************************************
发送len个字节,buf:发送区首地址,len:发送的字节数
***********************************************************************************/
void USART1_Transmit(u8*buf,u8 len)
{
u8 t;
for(t = 0; t<len; t++)//循环发送数据
{
while((USART1->SR&0X80)==0)//等待发送结束
;
USART1->DR = buf[t];
}
while((USART1->SR&0X40)==0)//等待发送结束
;
USART_RXCNT=0;
}
/***********************************************************************************
串口1接收中断函数
***********************************************************************************/
void USART1_IRQHandler(void)
{
u8 Res;
if(USART_GetITStatus(USART1, USART_IT_RXNE) != RESET)
{
Res =USART_ReceiveData(USART1);
USART_RXBUF[USART_RXCNT]=Res ;
USART_RXCNT++;
}
}
[/mw_shl_code]
|