“串口通信简单实例-M4”中的发送数据函数 USART_SendData 一次只能发送8位
我想通过修改函数让它能一次发送32位数,比如 USART_SendData(USART1,0x12345678)能直接把这个32位数发出来,
做出修改如下:
原函数代码:
void USART_SendData(USART_TypeDef* USARTx, uint16_t Data)
{
/* Check the parameters */
assert_param(IS_USART_ALL_PERIPH(USARTx));
assert_param(IS_USART_DATA(Data));
/* Transmit Data */
USARTx->DR = (Data & (uint16_t)0x01FF);
现函数代码:
void USART_SendData(USART_TypeDef* USARTx, uint32_t Data)
{
assert_param(IS_USART_ALL_PERIPH(USARTx));
//assert_param(IS_USART_DATA(Data));
USARTx->DR = (( Data & (uint32_t)0xff000000 ) >>24);
USARTx->DR = (( Data & (uint32_t)0xff0000 ) >>16);
USARTx->DR = (( Data & (uint32_t)0xff00 ) >>8);
USARTx->DR = ( Data & (uint32_t)0xff ) ;
}
(注:也尝试过简单将原本代码最后一行换成 USARTx->DR = Data ;,但没有卵用)
结果都无法实现目的,无论怎么改,最后都是发送8位,用调试助手检测到的就是16进制的 78
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
一周热门 更多>