2200|1

155

帖子

1

TA的资源

一粒金砂(高级)

楼主
 

三、点灯案例与扩展 [复制链接]

本人的第三篇测评了,论坛很多大神都写了很棒的测评帖子,在下只能按照自己的节奏一步步走下去了。

测评帖子一 “开箱测评”:https://bbs.eeworld.com.cn/thread-1192788-1-1.html

测评帖子二 “环境搭建”:https://bbs.eeworld.com.cn/thread-1193053-1-1.html


1、案例下载

第三篇就开始搞搞案例了,第一个当然是点灯,工程源码按“Library”和“Demo”放置在同一目录下,选择“01_GPIO_Running_LED”。

 

 

 通过Mini线连接Link口到PC机,本人的win10系统自动识别了debugger驱动,出于好奇也查找了设备管理器,不过却没有看到Link连接后识别的设备,有点小疑问,不过不影响使用,暂时先不管了。

2、多点几个灯

三年前准备了Arduino扩展板——EasySheild,本来是准备给大一学生作“专业认知实践”的,结果连着两届都是线上了。模块隔着也是吃灰,拿出来用一下了,也是省的用面包板搞外围电路。扩展板的样子如下:

 

扩展板的功能比较简单了,开关量器件比较多,有蓝、红两个LED对应Uno的D13和D12,则对应GD32L233C-START的PB13和PB14。一个RGB灯,对应D9~D11,则对应START板的PB0,PB12和PB15。

原流水灯案例的代码本人扩展了一下(基本是照猫画虎了,下一篇再分析代码吧),做了两个功能:1)加上扩展板的两个LED和板子的四个,做六LED的流水灯,代码如下:

int main(void)
{
    systick_config();

    /* enable the LED GPIO clock */
    rcu_periph_clock_enable(RCU_GPIOA);
    rcu_periph_clock_enable(RCU_GPIOC);
	  rcu_periph_clock_enable(RCU_GPIOB);
    /* configure LED GPIO pin */
    gpio_mode_set(GPIOA, GPIO_MODE_OUTPUT, GPIO_PUPD_NONE, GPIO_PIN_7 | GPIO_PIN_8);
    gpio_output_options_set(GPIOA, GPIO_OTYPE_PP, GPIO_OSPEED_50MHZ, GPIO_PIN_7 | GPIO_PIN_8);
    gpio_mode_set(GPIOC, GPIO_MODE_OUTPUT, GPIO_PUPD_NONE, GPIO_PIN_6 | GPIO_PIN_7);
    gpio_output_options_set(GPIOC, GPIO_OTYPE_PP, GPIO_OSPEED_50MHZ, GPIO_PIN_6 | GPIO_PIN_7);
	  gpio_mode_set(GPIOB, GPIO_MODE_OUTPUT, GPIO_PUPD_NONE, GPIO_PIN_13 | GPIO_PIN_14 | GPIO_PIN_12 | GPIO_PIN_15 | GPIO_PIN_0);
    gpio_output_options_set(GPIOB, GPIO_OTYPE_PP, GPIO_OSPEED_50MHZ, GPIO_PIN_13 | GPIO_PIN_14 | GPIO_PIN_12 | GPIO_PIN_15 | GPIO_PIN_0);
    /* reset LED GPIO pin */
    gpio_bit_reset(GPIOA, GPIO_PIN_7 | GPIO_PIN_8);
    gpio_bit_reset(GPIOC, GPIO_PIN_6 | GPIO_PIN_7);

    while(1) {
        /* turn on LED1, turn off LEDR */
        gpio_bit_set(GPIOA, GPIO_PIN_7);
        gpio_bit_reset(GPIOB, GPIO_PIN_14);
        delay_1ms(500);

        /* turn on LED2, turn off LED1 */
        gpio_bit_set(GPIOA, GPIO_PIN_8);
        gpio_bit_reset(GPIOA, GPIO_PIN_7);
        delay_1ms(500);

        /* turn on LED3, turn off LED2 */
        gpio_bit_set(GPIOC, GPIO_PIN_6);
        gpio_bit_reset(GPIOA, GPIO_PIN_8);
        delay_1ms(500);

        /* turn on LED4, turn off LED3 */
        gpio_bit_set(GPIOC, GPIO_PIN_7);
        gpio_bit_reset(GPIOC, GPIO_PIN_6);
        delay_1ms(500);
			
			  /* turn on LEDB, turn off LED4 */
				gpio_bit_set(GPIOB, GPIO_PIN_13);
        gpio_bit_reset(GPIOC, GPIO_PIN_7);
        delay_1ms(500);
				
				/* turn on LEDR, turn off LEDB */
				gpio_bit_set(GPIOB, GPIO_PIN_14);
        gpio_bit_reset(GPIOB, GPIO_PIN_13);
        delay_1ms(500);
			//aita_RGB(); //多彩灯测试函数
    }
}

 

 

2)RGB的7色依次点亮,额外编写了一个函数来调用,代码如下: 

#include "gd32l23x.h"
#include "systick.h"

void aita_RGB(void);

/*!
    \brief      main function
    \param[in]  none
    \param[out] none
    \retval     none
*/
int main(void)
{
    systick_config();

    /* enable the LED GPIO clock */
    rcu_periph_clock_enable(RCU_GPIOA);
    rcu_periph_clock_enable(RCU_GPIOC);
	  rcu_periph_clock_enable(RCU_GPIOB);
    /* configure LED GPIO pin */
    gpio_mode_set(GPIOA, GPIO_MODE_OUTPUT, GPIO_PUPD_NONE, GPIO_PIN_7 | GPIO_PIN_8);
    gpio_output_options_set(GPIOA, GPIO_OTYPE_PP, GPIO_OSPEED_50MHZ, GPIO_PIN_7 | GPIO_PIN_8);
    gpio_mode_set(GPIOC, GPIO_MODE_OUTPUT, GPIO_PUPD_NONE, GPIO_PIN_6 | GPIO_PIN_7);
    gpio_output_options_set(GPIOC, GPIO_OTYPE_PP, GPIO_OSPEED_50MHZ, GPIO_PIN_6 | GPIO_PIN_7);
	  gpio_mode_set(GPIOB, GPIO_MODE_OUTPUT, GPIO_PUPD_NONE, GPIO_PIN_13 | GPIO_PIN_14 | GPIO_PIN_12 | GPIO_PIN_15 | GPIO_PIN_0);
    gpio_output_options_set(GPIOB, GPIO_OTYPE_PP, GPIO_OSPEED_50MHZ, GPIO_PIN_13 | GPIO_PIN_14 | GPIO_PIN_12 | GPIO_PIN_15 | GPIO_PIN_0);
    /* reset LED GPIO pin */
    gpio_bit_reset(GPIOA, GPIO_PIN_7 | GPIO_PIN_8);
    gpio_bit_reset(GPIOC, GPIO_PIN_6 | GPIO_PIN_7);

    while(1) {
			aita_RGB();
    }
}

void aita_RGB(void) {
	gpio_bit_set(GPIOB, GPIO_PIN_0);gpio_bit_reset(GPIOB, GPIO_PIN_12);gpio_bit_reset(GPIOB, GPIO_PIN_15);
	delay_1ms(500);
	
	gpio_bit_reset(GPIOB, GPIO_PIN_0);gpio_bit_set(GPIOB, GPIO_PIN_12);gpio_bit_reset(GPIOB, GPIO_PIN_15);
	delay_1ms(500);
	
	gpio_bit_reset(GPIOB, GPIO_PIN_0);gpio_bit_reset(GPIOB, GPIO_PIN_12);gpio_bit_set(GPIOB, GPIO_PIN_15);
	delay_1ms(500);
	
	gpio_bit_set(GPIOB, GPIO_PIN_0);gpio_bit_set(GPIOB, GPIO_PIN_12);gpio_bit_reset(GPIOB, GPIO_PIN_15);
	delay_1ms(500);
	
	gpio_bit_reset(GPIOB, GPIO_PIN_0);gpio_bit_set(GPIOB, GPIO_PIN_12);gpio_bit_set(GPIOB, GPIO_PIN_15);
	delay_1ms(500);
	
	gpio_bit_set(GPIOB, GPIO_PIN_0);gpio_bit_reset(GPIOB, GPIO_PIN_12);gpio_bit_set(GPIOB, GPIO_PIN_15);
	delay_1ms(500);
	
	gpio_bit_set(GPIOB, GPIO_PIN_0);gpio_bit_set(GPIOB, GPIO_PIN_12);gpio_bit_set(GPIOB, GPIO_PIN_15);
	delay_1ms(500);
	
	gpio_bit_reset(GPIOB, GPIO_PIN_0);gpio_bit_reset(GPIOB, GPIO_PIN_12);gpio_bit_reset(GPIOB, GPIO_PIN_15);
	delay_1ms(500);
}

 

 

 

此帖出自GD32 MCU论坛

最新回复

RGB的7色点灯效果很棒,谢谢楼主评测的这么详细   详情 回复 发表于 2022-2-7 07:25
点赞(1) 关注
 

回复
举报

6828

帖子

0

TA的资源

五彩晶圆(高级)

沙发
 

RGB的7色点灯效果很棒,谢谢楼主评测的这么详细

此帖出自GD32 MCU论坛
 
 
 

回复
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/7 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表