【STM32L496G-DISCO试用体验】+一闪一闪亮晶晶之软件篇

  • SingleYork
  • LV5工程师
  • |      2017-08-27 09:42:26
  • 浏览量 1166
  • 回复:0
本帖最后由 SingleYork 于 2017-8-27 09:59 编辑 bg1.png

这一篇笔者主要跟大家分享一下点灯的软件部分,在上一讲中,我们已经知道了,STM32L496G-DISCO开发板上能直接用STM32L496来点灯的就只有LD2(也即网络号LED1,PB13口)了,那么软件部分我们需要怎么实现呢?我们还是直接用前面新建工程篇里面建立的工程直接来操作:【STM32L496G-DISCO试用体验】+CubeMX新建工程的另一种方法.

在新建完工程,笔者准备配置时钟的时候,发现一个问题,那就是不能配置外部高速时钟作为MCU的主时钟,而且默认的时钟频率也只有14.2M,难道这是因为考虑低功耗的缘故?

笔者也不是很理解,然后果断查看了一下原理图,发现,原理图上确实没有外接外部高速晶振,只接了一个32.768k的低速时钟:

好吧 ,你不接就不接吧,反正不是也还有内部时钟么!板子都能跑DEMO程序、播放音乐、播放视频,那么点个灯肯定绰绰有余了!好吧,切入正题,在CubeMX工程配置好后,便可以自动生成代码了,具体配置就不说了,前面STM723E-DISCO试用帖中已经说的很清楚了,在此就不再赘述:

自动生成代码成功后,我们便可以打开MDK工程文件,来进行点灯的编程了:

在工程文件中,我们找到main.c文件,可以看到里面有很多配置函数,那么我们可以不管用管,只需关注一下MX_GPIO_Init()这个函数即可,因为这里主要涉及到GPIO口的信息。

在MX_GPIO_Init()函数中我们可以看到有这么一句代码:HAL_GPIO_WritePin(LED1_GPIO_Port, LED1_Pin, GPIO_PIN_RESET);

这个函数里有个LED1_GPIO_Port和LED1_Pin,追踪一下这两个参数,我们可以发现,这正是我们需要用来点灯的GPIO口:

在这个HAL_GPIO_WritePin(LED1_GPIO_Port, LED1_Pin, GPIO_PIN_RESET);函数中,直接将LED1的控制端口设置成了低电平了,这个时候LED1应该就是上电后是一直亮的!那么,同理,我们需要让LED1灭,只需要让LED1的控制端口直接设置成高电平即可:HAL_GPIO_WritePin(LED1_GPIO_Port, LED1_Pin, GPIO_PIN_SET);为了能让我们清楚的看到LED1的亮与灭的动作,我们可以在这两者之间加一个延时,这样我们就可以看到LED1一闪一闪的效果了:

我们把程序下载到开发板上,来看一下效果吧:

这里需要特别主要的是,LD2实际上是由网络LED1控制的,LD1反而是由网络号LED2控制的,不知道ST官方的设计人员是故意的还是设计时的一个BUG!总感觉特别别扭,元芳,你怎么看?

最后,附上源代码:

  • 0
  • 收藏
  • 举报
  • 分享
我来回复

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

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