启动文件用V3.5 有UART4 UART5的定义
没有开启SD功能
void USART4_Configuration(void)
{
USART_InitTypeDef USART_InitStruct;
USART_StructInit(&USART_InitStruct); //将结构体设置为缺省状态
USART_InitStruct.USART_BaudRate=9600; //波特率设置为9600
USART_InitStruct.USART_WordLength=USART_WordLength_8b; //一帧数据的宽度设置为8bits
USART_InitStruct.USART_StopBits=USART_StopBits_1; //在帧结尾传输1个停止位
USART_InitStruct.USART_Parity=USART_Parity_No; //奇偶失能模式,无奇偶校验
USART_InitStruct.USART_HardwareFlowControl=USART_HardwareFlowControl_None;//硬件流控制失能
USART_InitStruct.USART_Mode=USART_Mode_Tx |USART_Mode_Rx; //使能发送/接收使能
USART_Init(UART4, &USART_InitStruct);
USART_ITConfig(UART4, USART_IT_RXNE, ENABLE); //打开串口2的中断响应函数
//USART_ClearFlag(UART4,USART_FLAG_TC); //清除标志位,否则第1位数据会丢失
USART_Cmd(UART4, ENABLE); //打开USART2
GPIO_ResetBits(GPIOD, GPIO_Pin_5); //设置USART4为数据接收模式
}
void UART4_IRQHandler(void)
{
u8 i;
if (USART_GetITStatus(UART4, USART_IT_RXNE) != RESET) //接收中断?
{
USART_ClearITPendingBit(UART4,USART_FLAG_RXNE);
Rxbuf4[Rxcnt4]=USART_ReceiveData(UART4);
if(Rxcnt4++ > 127) Rxcnt4=127;
if(Rxbuf4[Rxcnt4-2]==0x0d&&Rxbuf4[Rxcnt4-1]==0x0a)
{
Txcnt4=Rxcnt4;
for(i=0;i<Rxcnt4;i++) Txbuf4[i]=Rxbuf4[i];
Txbuf4[Rxcnt4]=0;
Rxcnt4=0;
rec_f4=1;
}
}
if (USART_GetITStatus(UART4, USART_IT_TXE) != RESET) //发送中断?
{
if (ptxd4<Txcnt4)
{
USART_SendData(UART4,Txbuf4[ptxd4]);
ptxd4++ ;
}
else
{
ptxd4=0 ;
USART_ITConfig(UART4, USART_IT_TXE, DISABLE);
GPIO_ResetBits(GPIOD, GPIO_Pin_5); //设置UART4为数据接收模式
}
}
|