这款芯片到手之后,比我想象中的小很多很多,但是根据我们上周的策划,这款芯片的外设资源基本可以适应一台电机的驱动任务。
本周的计划是跑通GD32给到的例程。我使用的开发环境是千年不变的Keil5.23。
### 环境布置
按照说明书里所说,基本步骤如下:
+ 安装Pack包
`GigaDevice.GD32F30x_DFP.2.2.0.pack`这个包已经提供在试用首页下载了。
+ 接下来找到试用工程
可以在`GD32F3x0_Demo_Suites_V2.2.0`中找到针对此次试用的`GD32310G_START_Demo_Suites`,此次我们以工程`03_EXTI_Key_Interrupt_mode`为例。
在工程文件目录中`MDK-ARM`可以找到`GD32F310G_START.uvproj`的Keil工程项目文件,按照说明要求,需要将文件后缀名改成`*.uvprojx`,然后再打开。
+ 尝试编译工程
打开之后发现找不到库文件。
接下来需要将库文件拷贝到它这里链接的位置或者直接重新添加,我才用的方法是直接自己找一个新的位置,然后重新添加文件,注意**还需要同步一下include文件位置**。
首先修改一下源文件的位置
然后在头文件配置中添加好新的位置,之后把之前原有的内容删掉就好。
编译一下:
+ 烧录
先检查一下烧录相关的配置,应当使用板载的DAP工具,可以看到如下图所示:
能够正常发现设备,然后就可以直接开始烧录,调试一下。找一个顺眼的函数打一个断点,可以正常中断并开始调试。
### 测试代码简单的分析
这段测试代码的主要作用是按键控制灯开关。在程序最先初始化完的时候灯会闪亮一下,然后进入按键控制状态。
主要的代码逻辑如下:
``` C++
// 系统初始化
// 初始化中断和中断向量
nvic_irq_enable(EXTI0_1_IRQn, 2U, 0U); // 启用特定中断,并赋予优先级
syscfg_exti_line_config(EXTI_SOURCE_GPIOA, EXTI_SOURCE_PIN0); // 设定中断源
exti_init(EXTI_0, EXTI_INTERRUPT, EXTI_TRIG_FALLING); // 设定触发条件:下降沿
exti_interrupt_flag_clear(EXTI_0); // 清除中断标志,将允许中断响应
// 配置IO口
// 闪一下
led_flash(1); // 亮250ms,灭250ms
// 主循环,空循环
```
按键中断逻辑:
``` C++
void EXTI0_1_IRQHandler(void)
{
if(RESET != exti_interrupt_flag_get(EXTI_0)){
gpio_bit_write(GPIOA, GPIO_PIN_1,
(bit_status)(1-gpio_input_bit_get(GPIOA, GPIO_PIN_1)));
}
exti_interrupt_flag_clear(EXTI_0);
}
```
判定一下是否有中断标志位被置位,如果有,那么执行翻转,在中断结束位清除中断标志。
小结一下,这次配置通过了调试环境,并调试通过了一项例程。之后的开发将会在此例程的基础上进行改进。
|