首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

入门板单片机怎么玩透LED灯

入门一款单片机,一般从单片机输出0/1开始,最直观的现象现象就是点亮一个LED、让一个LED亮灭闪烁、多个LED流水灯等

以GD32L233C-START板为例,它载4颗LED,因此,就着这4颗LED,也是可以有很多玩法的。

一、已有资源分析

官方提供了丰富的资源,主要有GD32L23x_Firmware_Library_V1.0.1,GD32L23x_AddOn_V1.0.0(GigaDevice.GD32L23x_DFP_1.0.0.pack)和GD32L23x_Demo_Suites_V1.1.0。

通过分析以上资源的源码,GD32L23x_Firmware_Library_V1.0.1是最新的标准库版本,基于V1.0.0,部分外设有所修改。同时提供了基于GD32L233R-EVAL-V1.0 board的丰富例程。

GD32L23x_AddOn_V1.0.0提供了KEIL和IAR的pack包。安装后KEIL中显示版本是V0.0.0,但通过打开库文件源码,可以看到应该和GD32L23x_Firmware_Library_V1.0.1是同步的。

GD32L23x_Demo_Suites_V1.1.0主要提供了GD32L233C-START、GD32L233K_START\GD32L233R_EVAL三块板子的例程。因为START作为入门板子的原因,板载资源有限,例程仅有LED、Key、EXTI_Key、USART、TIMER_Key、USBD_CDC的例程。

另外三个资源包虽然标准库版本一样,但是查看文件大小,部分源代码文件大小有差异。这个需要在使用的时候注意一下。

二、 GD32L233C-START LED硬件电路

GD32L233C-START的LED总共有4个,分别有PA7、PA8、PC6、PC7四个引脚控制,高电平有效。

三、GD32L23x_Demo_Suites_V1.1.0 中的点灯程序

将GD32L23x_Demo_Suites_V1.1.0 压缩包解压到非中文目录,然后打开第一个例程,编译,0error,0warning。然后确认一下工程的option选项信息,使用CMSIS-DAP。

四、源码分析

4.1 systick配置及使用

4.1.1 配置

配置程序比较简单,调用两个库函数,SysTick_Config()根据系统时钟和定时周期来进行systick的时钟配置和工作模式的配置。SysTick_Config()配置systick的中断优先级。

4.1.2 使用

首先,定义一个用于tick中断中进行减操作的变量。然后delay_decrement()函数在tick中断中被调用,当delay不为0,减一。使用delay_1ms()在需要ms级延时的地方进行延时,参数为要延时的毫秒数。

***这样的延时函数,其实是有局限性的。比如在调用一次delay_1ms(10)之后,经过10ms延时,在下一次调用delay_1ms()之前,delay是一直为0的。相较于STM32中一直使用的systick的延时方式,GD给的tick延时函数有非常大的局限性。也就只能作为延时函数使用了。

4.2 GPIO配置及置位/清零操作

三部曲:第一步:开时钟;第二步:gpio_mode_set()设置输入输出、上下拉,gpio_output_options_set()设置输出类型、速度;第三步:gpio_bit_reset()、gpio_bit_set()函数进行引脚输出置位/清零操作。每一个函数,操作的引脚都可以其中任意多个,并且可以是非连续引脚。

库文件中,对于GPIO的操作,无论是输入还是输出,基本上涵盖了日常用到的所有操作。使用的时候直接调用对应的函数就行。

流水灯改造:

将下边的代码做以下修改

然后将while(1)中的内容做如下改动(将原来的代码注释掉,增加下边的三行):

一个新的流水灯就有了。有了标准库,点灯是不是很简单

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20221222A06OXV00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券