我在做一个只能停车场管理系统的毕业设计,利用24Cxx注册和删除用户信息功能,刷卡抬杆和落杆的功能,记录停车时间以及刷卡收费充值功能,都已经实现了。现在唯一的问题在于毕设要求语音播报功能,参考了原子哥的音乐播放器程序,做了改动,能够在需要时播放指定的语音文件。
但是问题来了,wm8978是用I2S驱动的,而RFID是用SPI驱动的,两个功能单独运行时都成功了,但是合在一起就不行了,放了语音就读不到卡。看了原子哥说I2S和SPI是共用寄存器的,不能同时使用,那么我改怎么办呢,怎么同时实现这两个功能呢。谢谢大家给些建议,真的现在有一种毕不了业的冲动。
程序完全调试好后会把整个工程贴上来,供大家参考。
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
void USART1_IRQHandler(void) //´串口一中断函数
{
u8 Res;
int jiaodu ,i=0;
if(USART_GetITStatus(USART1, USART_IT_RXNE) != RESET)
{
Res =USART_ReceiveData(USART1); //读取接收到的数据
RX1_Buffer[COM1.RX_Cnt++] = Res; //缓存数据
COM1.B_NO_DEAL++; //未处理字节+1
if(COM1.B_NO_DEAL >= Pack_Len)//未处理数据量大于数据包长度
{
if(RX1_Buffer[COM1.RX_Start] == Pack_Head&&RX1_Buffer[COM1.RX_Start+Pack_Len-1] == Pack_Tail)
{
jiaodu=RX1_Buffer[(COM1.RX_Start+1)]%256+RX1_Buffer[(COM1.RX_Start+2)]*256;
printf("%d ",jiaodu);
if(RX1_Buffer[COM1.RX_Start+3]==0x01) printf(" ");
COM1.RX_Start+=Pack_Len;
COM1.B_NO_DEAL-=Pack_Len;
if(i>3)
{
COM1.RX_Start=0;
COM1.B_NO_DEAL=0;
COM1.RX_Cnt=0;
i=0;
}
}
else
{
COM1.B_NO_DEAL--;//未处理字节数减一
COM1.RX_Start++;//数据包起始位置加一
}
}
USART_ClearITPendingBit(USART1,USART_IT_RXNE);
}
这是我以前写过的一个有包头包尾的串口接收程序,测试成功,你可以参考一下,还有串口发送是一个字节一个字节发送的。
一周热门 更多>