在第一次申请的时候没能申请到。此次又有了重新申请的机会,才能如愿以偿,实在是一种荣幸呀!
1. 开箱
GD32F307E开发板还依然是那熟悉的透明塑料包装,见图1所示。
图1 GD32F307E开发板及包装
2. 上电测试
GD32F307E开发板有多个USB接口,似乎只有CN100才能为开发板提供电源,且需要将电源开关切换到LINK一侧。
图2 上电效果
上电后,电脑即开始安装驱动,然后并无太大的变化。此时,若按下USER键,则LED1被点亮,再次按下USER键,则LED1被熄灭,此后则依此反复变换。
图3 点亮LED1
3. 程序分析
那为什么会出现这种效果呢?
熄灭还是看一下它的主程序:
int main(void)
{
gd_eval_key_init(KEY_WAKEUP, KEY_MODE_EXTI);
gd_eval_led_init(LED1);
while(1){
}
}
由此可知,它是通过按键状态的变化调用中断以控制LED的状态切换。
那LED1和USER键又是占用哪个引脚呢?
由程序和原理图可知,LED1占用的是PC6,而USER键占用的则是PA0。
对LED1和USER键所做的定义为:
#define LED1_PIN GPIO_PIN_6
#define LED1_GPIO_PORT GPIOC
#define LED1_GPIO_CLK RCU_GPIOC
/* wakeup push-button */
#define WAKEUP_KEY_PIN GPIO_PIN_0
#define WAKEUP_KEY_GPIO_PORT GPIOA
#define WAKEUP_KEY_GPIO_CLK RCU_GPIOA
#define WAKEUP_KEY_EXTI_LINE EXTI_0
#define WAKEUP_KEY_EXTI_PORT_SOURCE GPIO_PORT_SOURCE_GPIOA
#define WAKEUP_KEY_EXTI_PIN_SOURCE GPIO_PIN_SOURCE_0
#define WAKEUP_KEY_EXTI_IRQn EXTI0_IRQn
typedef enum
{
KEY_WAKEUP = 0,
KEY_TAMPER = 1,
KEY_USER = 2
} key_typedef_enum;
typedef enum
{
KEY_MODE_GPIO = 0,
KEY_MODE_EXTI = 1
} keymode_typedef_enum;
图4 LED1和USER键原理图
4. 开发环境构建
为了测试例程和程序开发,开发环境的构建是必不可少的,以KEIL为例其构建步骤如下:
1)安装KEIL软件,我选的版本是V5.23;
2)下载并安装升级包GigaDevice.GD32F30x_DFP.1.0.1和GigaDevice.GD32F30x_AddOn.1.0.1,以添加芯片支持,见图5所示;
3)为生成目标文件HEX,需按图6进行设置;
4)为进行调试和下载,需按图7和图9所示来设置调试工具类型及烧录算法;
5)为生成目标文件,需对程序进行编译和下载,其效果如图10和图11所示。
图5 添加芯片支持
图6 生成目标文件
图7 设置调试工具类型
图8 激活调试工具
图9 设置烧录算法
图10 完成编译
图11 实现下载
完成开发环境的构建和下载测试,后面的测试及开发工作就会轻松许多,否则一切都白搭!
本帖最后由 jinglixixi 于 2020-11-9 10:44 编辑然而这次我申请了AT32F403A,哈哈,希望能够通过~
引用: w494143467 发表于 2020-11-6 20:11 然而这次我申请了AT32F403A,哈哈,希望能够通过~
时间不同,但效果不会有有什么差异。
引用: freebsder 发表于 2020-11-6 22:12 很详细!
别人都走过一轮儿了,写起来会使人乏味。