OpenEdv-开源电子网

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

DMA实验

[复制链接]

39

主题

123

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
250
金钱
250
注册时间
2017-6-8
在线时间
46 小时
发表于 2017-6-21 16:48:27 | 显示全部楼层 |阅读模式
1金钱
const u8 TEXT_TO_SEND[]={"ALIENTEK Elite STM32F1 DMA 串口实验"}
在历程中是存储区到外设,所以把存储区的数据通过通道4传输到USART1发送引脚上,最后实验结果是打开串口以后,屏幕上显示const u8 TEXT_TO_SEND[]={"ALIENTEK Elite STM32F1 DMA 串口实验"}这个知道满足数据量以后才停止。




① 为什么串口会发送这段数据,是我们往存储区里写得吗?const u8 TEXT_TO_SEND[]={"ALIENTEK Elite STM32F1 DMA 串口实验"}这句话就是往存储区里写吗?


②为什么定义一个8位的数组(u8)会有字,字不是2个字节占16位吗?

最佳答案

查看完整内容[请看2#楼]

①因为历程中for语句把TEXT_TO_SEND赋值给了SendBuff,然后通过DMA传给USART1,使能usart1dma通道然后串口开始发送数据。 ②一个汉字算两个字节,这部分代码的意思是,开一块空间(没有确认大小),第一个位置存A,第二个位置存L等等,第N个位置和第N+1个位置存“串”(因为一个汉字的GBK码是两个字节,它会自动用GBK码表示,比如串字可能就是0xA1,0x3D,所以可以存)。 然后u16 a[10]这么定义一般来说A里面东西都是同一类型的, ...
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

39

主题

123

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
250
金钱
250
注册时间
2017-6-8
在线时间
46 小时
 楼主| 发表于 2017-6-21 16:48:28 | 显示全部楼层
①因为历程中for语句把TEXT_TO_SEND赋值给了SendBuff,然后通过DMA传给USART1,使能usart1dma通道然后串口开始发送数据。
②一个汉字算两个字节,这部分代码的意思是,开一块空间(没有确认大小),第一个位置存A,第二个位置存L等等,第N个位置和第N+1个位置存“串”(因为一个汉字的GBK码是两个字节,它会自动用GBK码表示,比如串字可能就是0xA1,0x3D,所以可以存)。
然后u16 a[10]这么定义一般来说A里面东西都是同一类型的,没有人把一堆不同类型的东西看一个数组里(结构体除外)。你上面的英文+汉字,其实英文会自动转成ASCII 码,汉字会自动转成GBK码,所以类型也是一样的,都是u8。
所以也就是说定义的是8位还是8位。
③初始化DMA_Init的时候有个数据宽度,我想,数据宽度就是位宽吧,就是一次传输的数据量8位,12位,24位,至于说的字节、半字、全字只是三种模式吧来代替8位。16位。32位,而与我们所说的饿一个字占2个字节16位不一样。
而我查了一个主函数中定义的存储器是u8p[],usart中dr寄存器是低8位有效所以都设置为数据宽度位8位吧
然后传输的数据总量cdter,因为寄存器是16位所以传输最大是65535个字节,至于原子哥数的每一百减一也是按照字节算的吧,没传输一个字节减以。


是这样吧?折腾了一下午琢磨的,希望错的地方原子哥帮忙指点下,谢谢
回复

使用道具 举报

39

主题

123

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
250
金钱
250
注册时间
2017-6-8
在线时间
46 小时
 楼主| 发表于 2017-6-21 17:20:01 | 显示全部楼层
被数据搞蒙了,。。
③DMA传送数据的时候设置宽度为8,16 32是一次传8位16位或32位,传送8叫字节,16半字,32全字,这跟平常说的一个字占16位是一样的吗,懵了。
还有传输的数据总量为2^16,65535个字节,视频里原子哥说假设传送100,传一个减1,数字字母汉字他们占得字节数不是不一样吗,什么意思这是。
TEXT_TO_SEND[]={"ALIENTEK Elite STM32F1 DMA 串口实验"};这个是多少字节啊。。。
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2017-6-22 23:10:10 | 显示全部楼层
stm32f103ZE 发表于 2017-6-21 20:37
①因为历程中for语句把TEXT_TO_SEND赋值给了SendBuff,然后通过DMA传给USART1,使能usart1dma通道然后串口 ...

理解的不错
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2017-6-22 23:10:12 | 显示全部楼层
stm32f103ZE 发表于 2017-6-21 20:37
①因为历程中for语句把TEXT_TO_SEND赋值给了SendBuff,然后通过DMA传给USART1,使能usart1dma通道然后串口 ...

理解的不错
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2017-6-22 23:10:18 | 显示全部楼层
stm32f103ZE 发表于 2017-6-21 20:37
①因为历程中for语句把TEXT_TO_SEND赋值给了SendBuff,然后通过DMA传给USART1,使能usart1dma通道然后串口 ...

理解的不错
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-8-17 20:31

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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