电子工程师技术服务社区
公告
登录
|
注册
首页
技术问答
厂商活动
正点原子
板卡试用
资源库
下载
文章
社区
论坛
开发板专区
STM32F429Disco串口1中断+串口1DMA实验
STM32F429Disco串口1中断+串口1DMA实验
donatello
LV6工程师
| 2017-02-26 23:04:13
浏览量 768
回复:0
发表新帖
STM32F429Disco,下文简称F429探索者,是STM32官方推出的三大开发板(Nucleo,Disco,EVAL,外设
从少到多)之中较为面向个人用户实际程序开发的开发板(个人认为Nucleo偏向于个人用户产品原型开发,
EVAL偏向于企业用户专业评估开发,其中最贵的是EVAL评估板)。这块F429探索者的特点是带了一个接在FSMC
总线的LCD彩屏以及同样挂在FSMC总线上的SRAM(静态内存) IS42S16400,这些都是高端的外设啊!
俗话说万物皆从点灯开始,可是我拿这块板子肯定不可能简单地为了点灯,我是要完成一些在Nucleo
F412板子上面无法完成的探索(如之前的F412驱动SDIO失败,F412驱动硬件DAC失败,F412开发板没有配备
SRAM),因此在刚上手这块板子的时候就要学会找到虚拟串口并驱动,锦上添花,再加上串口中断和串口DMA那就更好了。
先从找到串口并初始化串口参数开始,查看原理图可以得出,F429探索者的板载虚拟串口是串口1,即PA9和PA10,与F103时代的普遍配置相同,那么接下来的事情,就是一连串的串口初始化工作,如设置AFIO,设置波特率,设置串口数据等等,不详细说了。
不过DMA的配置则要说明一下,首先用不用DMA是可以在宏定义选择的,1串口1DMA要选择DMA2的数据流7,通道4,而单次发送还是循环发送也是可以在宏定义选择的,注意选择循环发送的话串口就会像吃了春药一样1秒发送1万条记录,而单次发送则真的是只发一次(发完一次HAL_UART_Transmit_DMA()函数就废了,原因是DMA里面有个我不知道的标志位置1就无法发送,必须置0)。而在接收中断里面翻转了板载的PG13LED灯,每接收一次记录就翻转一次PG13。
如图,这三次实验分别是非DMA,循环发送DMA,单次发送DMA。
老规矩,上传头文件。
STM32F429Disco,下文简称F429探索者,是STM32官方推出的三大开发板(Nucleo,Disco,EVAL,外设
从少到多)之中较为面向个人用户实际程序开发的开发板(个人认为Nucleo偏向于个人用户产品原型开发,
EVAL偏向于企业用户专业评估开发,其中最贵的是EVAL评估板)。这块F429探索者的特点是带了一个接在FSMC
总线的LCD彩屏以及同样挂在FSMC总线上的SRAM(静态内存) IS42S16400,这些都是高端的外设啊!
俗话说万物皆从点灯开始,可是我拿这块板子肯定不可能简单地为了点灯,我是要完成一些在Nucleo
F412板子上面无法完成的探索(如之前的F412驱动SDIO失败,F412驱动硬件DAC失败,F412开发板没有配备
SRAM),因此在刚上手这块板子的时候就要学会找到虚拟串口并驱动,锦上添花,再加上串口中断和串口DMA那就更好了。
先从找到串口并初始化串口参数开始,查看原理图可以得出,F429探索者的板载虚拟串口是串口1,即PA9和PA10,与F103时代的普遍配置相同,那么接下来的事情,就是一连串的串口初始化工作,如设置AFIO,设置波特率,设置串口数据等等,不详细说了。
不过DMA的配置则要说明一下,首先用不用DMA是可以在宏定义选择的,1串口1DMA要选择DMA2的数据流7,通道4,而单次发送还是循环发送也是可以在宏定义选择的,注意选择循环发送的话串口就会像吃了春药一样1秒发送1万条记录,而单次发送则真的是只发一次(发完一次HAL_UART_Transmit_DMA()函数就废了,原因是DMA里面有个我不知道的标志位置1就无法发送,必须置0)。而在接收中断里面翻转了板载的PG13LED灯,每接收一次记录就翻转一次PG13。
如图,这三次实验分别是非DMA,循环发送DMA,单次发送DMA。
老规矩,上传头文件。
0
收藏
举报
分享
×
微信分享
扫描二维码分享
qq分享
QQ空间分享
微博分享
我来回复
登录后可评论,请
登录
或
注册
所有回答
数量:
0
×
举报
举报人:
被举报人:donatello
*
类型:
请选择类型
问题质量差
垃圾广告信息
偏离社区主题
违规内容
不友善内容
与社区已有问题重复
以上选项都不是
*
详细原因:
取消
提交
x
收藏成功!点击
我的收藏
查看收藏的全部帖子