新手请教一个关于DMA的小问题

2019-07-20 05:02发布

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);



友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
7条回答
Psheng
1楼-- · 2019-07-20 05:10
也可以直接写的,但是类型不同会有警告的,所以需要强制转换。你可以直接将buff定义为uint8_t 类型的,就不用强制转换了
wangweixin
2楼-- · 2019-07-20 06:08
wangweixin
3楼-- · 2019-07-20 07:00
 精彩回答 2  元偷偷看……
wangweixin
4楼-- · 2019-07-20 11:20
 精彩回答 2  元偷偷看……
Psheng
5楼-- · 2019-07-20 15:08
wangweixin 发表于 2018-11-17 15:07
我是不明白为什么要转换成指针变量型,这个地方不是应该是一个地址吗

指针就是地址呀
正点原子
6楼-- · 2019-07-20 15:39
 精彩回答 2  元偷偷看……

一周热门 更多>