|
发表于 2019-10-30 16:33:27
|
显示全部楼层
我下载了第三版
直接使用是有问题的
1、/*******************************************************************************
* 文件名 : USART1RecvFun
* 描述 : 当接收到完整的一帧数据以后的处理函数
* 输入 : ptr接收到的数据帧的头指针,接收到的数据帧的数据个数
* 输出 : 无
* 返回 : 无
*******************************************************************************/
void USART1RecvFun(unsigned char *ptr,unsigned int count)
{
USART1WriteDataToBuffer(ptr,8);
}
串口接收了数据返回数据是固定为8个字节,而不是count
2、使用DMA串口初始化没有初始化中断
#if DMA_MODE
//USART1NVIC_Configuration(); 这个没有 我自己加的
#else
USART_ITConfig(USART1,USART_IT_TC,ENABLE);
USART1NVIC_Configuration();
#endif
接收数据无法正确进入中断
3、
void USART1_IRQHandler(void)
{
static u8 Flag=0;
if(USART_GetFlagStatus(USART1,USART_FLAG_RXNE)==SET)
{
USART_ClearFlag(USART1,USART_FLAG_RXNE);//TCIE,TE,RE
if(Flag)
{
USART1RecvUpdate();
}
}
if(USART_GetFlagStatus(USART1,USART_FLAG_TC)==SET)
{
USART_ClearFlag(USART1,USART_FLAG_TC);//TCIE,TE,RE
if(Flag)
{
USART1SendUpdate();
}
}
Flag=1;
}
如果不调用Welcome(); 第一次串口接收的数据是少一个字节的 因为Flag上电为0 第一次接收丢掉了 除非发过一次数据,在接收数据之前 |
|