STM32L476编译环境的搭建及串口调试 2015-10-10 micharl83
一如既往,收到了来自苏州EEF发来的开发板(STM32L476-NUCLEO),同样的,内载了demo程序,上电如图所示。 首先,说一下环境的搭建。 万事开头难,这句话也应验在STM32L476的调试中。因为我使用的编译环境是keil5.11,这里怎么都找不到stm32L476的影子。于是乎,尝试安装keil5.15,记得之前我在一台机子上,调试GD103的时候,也遇到如此问题。所以,这个问题对于我来说,可能比较容易,但是对于没有使用高版本keil的TX来说,有点小难。 其次,说一下串口模块的调试。 随着点击蓝色按钮的次数不同,绿色闪烁灯的闪烁频率也不同(三种轮训进行)。 有了指示灯的显示,无疑减少了开发的难度。 一般上,玩一个开发板,都是从指示灯和信号数据开始的。既然有了指示灯,那就继续开始通信接口的调试吧。先从串口开始。 在通信接口中,串口是比较简单,而且常用的接口。 由原理图文档《MB1136.pdf》的截图,我们选择PA9/PA10作为调试串口管脚。 我做了三个实验:
实验完成之后,对串口代码调试中遇到的问题,进行总结。 第一, 习惯于STM32F407的代码调试之后,突然发现,nucleo版本的代码库,突然让我找不到方向。着急之下,我强行把代码移植过来,然后边编译,边改写宏等代码定义。IO口的修改完成之后,突然发现串口代码完全不同,而且中断都没有找到。放下板子,冷静了两天,重新拾起L476的代码之后,心里在想,既然工程师把这样的代码整理成包,就说明必有高明之处。于是乎,开始静下心来,研究代码。 第二, 研究串口代码N天之后,感觉到代码的高明之处,内心非常钦佩如此的代码逻辑安排。其实,对于底层驱动代码熟悉的工程师或者兴趣爱好者来说,可能这不算的什么,但能写出一套驱动代码,也并非一蹴而就。明白之后,顿觉收获匪浅。 第三, 实验简单,但耗费我几天的功夫,希望后续更多模块调试成功。比如12864的调试,激光测距调试,频率合成器调试等等,都是我最擅长的调试。
【经验】 1、 小结 (1) main开始,进行模块初始化;初始化过程中,包含管脚的功能定义,并会调用stm32l4xx_hal_tim.c或者stm32l4xx_hal_spi.c (驱动文件); (2) 驱动文件中,会调用HAL_TIM_Base_MspInit(htim)或者HAL_SPI_MspInit(htim); (3) HAL_TIM_Base_MspInit(htim)或者HAL_SPI_MspInit(htim)函数中,包含有中断的初始化;同时,在stm32l4xx_it.c内,定义中断函数; 中断函数会再次调用驱动文件stm32l4xx_hal_tim.c或者stm32l4xx_hal_spi.c内的xxxxHandle函数(比如:HAL_TIM_IRQHandler函数),该函数内有相应的回调函数,回调函数内,用户可以自由发挥,比如定时器中断时要干啥,或者接收到数据等等。 摘自我的学习笔记(michael83) |
希望简单的视频,可以激发你的调试兴趣。
STM32L476实例一:串口通信.pdf
(414.89 KB, 下载次数: 566)
|