OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 3257|回复: 7

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

[复制链接]

1

主题

14

帖子

0

精华

初级会员

Rank: 2

积分
110
金钱
110
注册时间
2018-10-4
在线时间
22 小时
发表于 2018-11-17 14:01:23 | 显示全部楼层 |阅读模式
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 类型的,就不用强制转换了
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

35

主题

560

帖子

2

精华

资深版主

Rank: 8Rank: 8

积分
17769
金钱
17769
注册时间
2018-3-3
在线时间
523 小时
发表于 2018-11-17 14:01:24 | 显示全部楼层
也可以直接写的,但是类型不同会有警告的,所以需要强制转换。你可以直接将buff定义为uint8_t 类型的,就不用强制转换了
回复

使用道具 举报

1

主题

14

帖子

0

精华

初级会员

Rank: 2

积分
110
金钱
110
注册时间
2018-10-4
在线时间
22 小时
 楼主| 发表于 2018-11-17 14:01:56 | 显示全部楼层
回复

使用道具 举报

1

主题

14

帖子

0

精华

初级会员

Rank: 2

积分
110
金钱
110
注册时间
2018-10-4
在线时间
22 小时
 楼主| 发表于 2018-11-17 15:07:39 | 显示全部楼层
Psheng 发表于 2018-11-17 14:58
也可以直接写的,但是类型不同会有警告的,所以需要强制转换。你可以直接将buff定义为uint8_t 类型的,就不 ...

我是不明白为什么要转换成指针变量型,这个地方不是应该是一个地址吗
回复

使用道具 举报

1

主题

14

帖子

0

精华

初级会员

Rank: 2

积分
110
金钱
110
注册时间
2018-10-4
在线时间
22 小时
 楼主| 发表于 2018-11-17 15:16:27 | 显示全部楼层
wangweixin 发表于 2018-11-17 15:07
我是不明白为什么要转换成指针变量型,这个地方不是应该是一个地址吗

(u8*)SendBuff是SendBuff作为地址转换为的一个指针然后取其中的变量?
比如数组SendBuff【】首地址是1000,那(u8*)SendBuff不是应该是地址为1000的数据吗?
回复

使用道具 举报

35

主题

560

帖子

2

精华

资深版主

Rank: 8Rank: 8

积分
17769
金钱
17769
注册时间
2018-3-3
在线时间
523 小时
发表于 2018-11-17 18:18:45 | 显示全部楼层
wangweixin 发表于 2018-11-17 15:07
我是不明白为什么要转换成指针变量型,这个地方不是应该是一个地址吗

指针就是地址呀
/*
*
*
*
*
*
*/
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165524
金钱
165524
注册时间
2010-12-1
在线时间
2116 小时
发表于 2018-11-18 01:55:28 | 显示全部楼层
能不能的问题,自己测试
回复

使用道具 举报

1

主题

14

帖子

0

精华

初级会员

Rank: 2

积分
110
金钱
110
注册时间
2018-10-4
在线时间
22 小时
 楼主| 发表于 2018-11-18 10:55:57 | 显示全部楼层
正点原子 发表于 2018-11-18 01:55
能不能的问题,自己测试

测试了 不转换也是可以的 我对指针还是不怎么理解。继续加油吧。原子哥,提个小意见,能不能抽空录制一下F429关于SDRAM和RGB LCD的视频啊?新手自己看PDF和查资料学习起来非常吃力,,望采纳
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-6-8 18:02

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表