本人的第三篇测评了,论坛很多大神都写了很棒的测评帖子,在下只能按照自己的节奏一步步走下去了。
测评帖子一 “开箱测评”: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);
}
|