我在调试程序的时候,遇到下边的问题的,,调试的是利用32位CPU的UART来发送数据的,但道理说UART发送数据一直是以一个字节的往出发送的,但是现在的主CPU是32位的,采集到的数据也是双字节的,这就需要将这双字节的数据从UART发送出去的,,但道理说是需要通过移位操作的,将双字节数据分两次通过UART发送出去的,但是我看程序库中的原函数的,有些疑惑的,大家帮着解释下的吧。。
请看下边的程序代码:
u16 vibra_send[35]={0x5442,1,0,0}; //
USART1_Send((u8*)vibra_send,70);
这是发送70个字节的数据的
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
void USART1_IRQHandler(void)
{
static vu8 tmp;
if(USART_GetITStatus(USART1, USART_IT_RXNE)!=RESET)
{
if(USART1_RecvSta!=USART_RECVSTA_RUN)
{
tmp=USART_ReceiveData(USART1);
return;
}
if(USART1_RxCount>0)
{
*pUSART1_RxBuff++ = USART_ReceiveData(USART1);
USART1_RxCount--;
}
if(USART1_RxCount<=0)
{ /* Disable the USART1 Receive interrupt */
USART_ITConfig(USART1, USART_IT_RXNE, DISABLE);
USART1_RecvSta=USART_RECVSTA_SUCC;
//USART_Cmd(USART1, DISABLE);
}
}
if((USART1_SendSta==USART_SENDSTA_RUN)&&(USART_GetITStatus(USART1, USART_IT_TXE) != RESET))//if(USART_GetITStatus(USART1, USART_IT_TXE) != RESET)
{
if(USART1_TxCount>0)
{
USART_SendData(USART1, *pUSART1_TxBuff++);
USART1_TxCount--;
if(USART1_TxCount<=0)
{
/* Disable the USART1 Transmit interrupt */
USART_ITConfig(USART1, USART_IT_TXE, DISABLE);
USART1_SendSta=USART_SENDSTA_SUCC;
}
}
}
}
注意发送数据部分的
USART_SendData(USART1, *pUSART1_TxBuff++);
一周热门 更多>