初级会员

- 积分
- 110
- 金钱
- 110
- 注册时间
- 2018-10-4
- 在线时间
- 22 小时
|
1金钱
DMA例程中是这样写的。
/* 开启一次DMA传输
huart:串口句柄
pData:传输的数据指针
Size:传输的数据量
*/
void MYDMA_USART_Transmit(UART_HandleTypeDef *huart, uint8_t *pData, uint16_t Size)
{
HAL_DMA_Start(huart->hdmatx, (u32)pData, (uint32_t)&huart->Instance->DR, Size);//开启DMA传输
huart->Instance->CR3 |= USART_CR3_DMAT;//使能串口DMA发送
}
调用此函数时是MYDMA_USART_Transmit(&UART1_Handler,(u8*)SendBuff,SEND_BUF_SIZE); //启动传输
为什么(u8*)SendBuff这样写啊?这是把数组SendBuff强制转换为指针变量吗?为什么不直接写SendBuff。
HAL库中是这样写的HAL_UART_Transmit_DMA(UART_HandleTypeDef *huart, uint8_t *pData, uint16_t Size)
调用是 HAL_UART_Transmit_DMA(&UART1_Handler,SendBuff,SEND_BUF_SIZE);
|
最佳答案
查看完整内容[请看2#楼]
也可以直接写的,但是类型不同会有警告的,所以需要强制转换。你可以直接将buff定义为uint8_t 类型的,就不用强制转换了
|