新手入门
- 积分
- 13
- 金钱
- 13
- 注册时间
- 2016-5-11
- 在线时间
- 3 小时
|

楼主 |
发表于 2016-5-18 16:22:07
|
显示全部楼层
“串口通信简单实例-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 |
|