stm32中的参数问题
一字节等于8位或者说8比特 arm是32位单片机:
char:1字节
short:2字节
int:4字节
long:4字节
float:4字节
double:8字节 常见定义 定义一个 字符数组a, 长度16; 占用字节: 16
unsigned char a[16];
将 无符号长整形声明为类型 INT32U;
typedef unsigned long INT32U;
声明了一个 无符号长整型数组 b, 个数: 4, 实际占用字节: 44 (在64位系统可能是 48);
INT32U b[4];
等同于
unsigned long b[4]
串口通信中的USART_ReceiveData和USART_SendData 串口传输一次包含八个数据位,也就是一个字节,例如0x01
void USART_SendData(USART_TypeDef* USARTx, uint16_t Data)
{
assert_param(IS_USART_ALL_PERIPH(USARTx));
assert_param(IS_USART_DATA(Data));
USARTx->DR = (Data & (uint16_t)0x01FF);
}
uint16_t USART_ReceiveData(USART_TypeDef* USARTx)
{
assert_param(IS_USART_ALL_PERIPH(USARTx));
return (uint16_t)(USARTx->DR & (uint16_t)0x01FF);
}
疑惑于为什么返回的不是8位,结果是由于16位的在发送之前要经过&0x01ff位运算除去高7位
(uint16_t)(USARTx->DR & (uint16_t)0x01FF);
|