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,这些都是高端的外设啊! 俗话说万物皆从点灯开始,可是我拿这块板子肯定不可能简单地为了点灯,我是要完成一些在NucleoF412板子上面无法完成的探索(如之前的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
  • 收藏
  • 举报
  • 分享
我来回复

登录后可评论,请 登录注册

所有回答 数量:0
x
收藏成功!点击 我的收藏 查看收藏的全部帖子