jinglixixi 发表于 2020-11-6 12:23

【GD32307E-START】+重归的GD32F307E开发板

本帖最后由 jinglixixi 于 2020-11-9 10:44 编辑

<p>在第一次申请的时候没能申请到。此次又有了重新申请的机会,才能如愿以偿,实在是一种荣幸呀!</p>

<p>1. 开箱</p>

<p>GD32F307E开发板还依然是那熟悉的透明塑料包装,见图1所示。</p>

<p></p>

<p>图1 &nbsp;GD32F307E开发板及包装</p>

<p>&nbsp;</p>

<p>2. 上电测试</p>

<p>GD32F307E开发板有多个USB接口,似乎只有CN100才能为开发板提供电源,且需要将电源开关切换到LINK一侧。</p>

<p></p>

<p>图2&nbsp; 上电效果</p>

<p>&nbsp;</p>

<p>上电后,电脑即开始安装驱动,然后并无太大的变化。此时,若按下USER键,则LED1被点亮,再次按下USER键,则LED1被熄灭,此后则依此反复变换。</p>

<p></p>

<p>图3&nbsp; 点亮LED1</p>

<p>&nbsp;</p>

<p>3. 程序分析</p>

<p>那为什么会出现这种效果呢?</p>

<p>熄灭还是看一下它的主程序:</p>

<p>int main(void)</p>

<p>{&nbsp;</p>

<p>&nbsp;&nbsp;&nbsp; gd_eval_key_init(KEY_WAKEUP, KEY_MODE_EXTI);</p>

<p>&nbsp;&nbsp;&nbsp; gd_eval_led_init(LED1);</p>

<p>&nbsp;&nbsp;&nbsp; while(1){</p>

<p>&nbsp;&nbsp;&nbsp; }</p>

<p>}</p>

<p>由此可知,它是通过按键状态的变化调用中断以控制LED的状态切换。</p>

<p>那LED1和USER键又是占用哪个引脚呢?</p>

<p>由程序和原理图可知,LED1占用的是PC6,而USER键占用的则是PA0。</p>

<p>对LED1和USER键所做的定义为:</p>

<p>#define LED1_PIN&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; GPIO_PIN_6</p>

<p>#define LED1_GPIO_PORT&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; GPIOC</p>

<p>#define LED1_GPIO_CLK&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; RCU_GPIOC</p>

<p>&nbsp;</p>

<p>/* wakeup push-button */</p>

<p>#define WAKEUP_KEY_PIN&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; GPIO_PIN_0</p>

<p>#define WAKEUP_KEY_GPIO_PORT&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; GPIOA</p>

<p>#define WAKEUP_KEY_GPIO_CLK&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; RCU_GPIOA</p>

<p>#define WAKEUP_KEY_EXTI_LINE&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;EXTI_0</p>

<p>#define WAKEUP_KEY_EXTI_PORT_SOURCE&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; GPIO_PORT_SOURCE_GPIOA</p>

<p>#define WAKEUP_KEY_EXTI_PIN_SOURCE&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;GPIO_PIN_SOURCE_0</p>

<p>#define WAKEUP_KEY_EXTI_IRQn&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;EXTI0_IRQn</p>

<p>&nbsp;</p>

<p>typedef enum</p>

<p>{</p>

<p>&nbsp;&nbsp;&nbsp; KEY_WAKEUP = 0,</p>

<p>&nbsp;&nbsp;&nbsp; KEY_TAMPER = 1,</p>

<p>&nbsp;&nbsp;&nbsp; KEY_USER = 2</p>

<p>} key_typedef_enum;</p>

<p>&nbsp;</p>

<p>typedef enum</p>

<p>{</p>

<p>&nbsp;&nbsp;&nbsp; KEY_MODE_GPIO = 0,</p>

<p>&nbsp;&nbsp;&nbsp; KEY_MODE_EXTI = 1</p>

<p>} keymode_typedef_enum;</p>

<p>&nbsp;</p>

<p></p>

<p>图4&nbsp; LED1和USER键原理图</p>

<p>&nbsp;</p>

<p>4. 开发环境构建</p>

<p>为了测试例程和程序开发,开发环境的构建是必不可少的,以KEIL为例其构建步骤如下:</p>

<p>1)安装KEIL软件,我选的版本是V5.23;</p>

<p>2)下载并安装升级包GigaDevice.GD32F30x_DFP.1.0.1和GigaDevice.GD32F30x_AddOn.1.0.1,以添加芯片支持,见图5所示;</p>

<p>3)为生成目标文件HEX,需按图6进行设置;</p>

<p>4)为进行调试和下载,需按图7和图9所示来设置调试工具类型及烧录算法;</p>

<p>5)为生成目标文件,需对程序进行编译和下载,其效果如图10和图11所示。</p>

<p></p>

<p>图5&nbsp; 添加芯片支持</p>

<p>&nbsp;</p>

<p></p>

<p>图6&nbsp; 生成目标文件</p>

<p>&nbsp;</p>

<p></p>

<p>图7&nbsp; 设置调试工具类型</p>

<p>&nbsp;</p>

<p></p>

<p>图8&nbsp; 激活调试工具</p>

<p>&nbsp;</p>

<p></p>

<p>图9&nbsp; 设置烧录算法</p>

<p>&nbsp;</p>

<p></p>

<p>图10 完成编译</p>

<p>&nbsp;</p>

<p></p>

<p>图11 实现下载</p>

<p>&nbsp;</p>

<p>完成开发环境的构建和下载测试,后面的测试及开发工作就会轻松许多,否则一切都白搭!</p>

w494143467 发表于 2020-11-6 20:11

<p>然而这次我申请了AT32F403A,哈哈,希望能够通过~</p>

freebsder 发表于 2020-11-6 22:12

<p>很详细!</p>

jinglixixi 发表于 2020-11-7 08:36

w494143467 发表于 2020-11-6 20:11
然而这次我申请了AT32F403A,哈哈,希望能够通过~

<p>时间不同,但效果不会有有什么差异。</p>

jinglixixi 发表于 2020-11-7 08:38

freebsder 发表于 2020-11-6 22:12
很详细!

<p>别人都走过一轮儿了,写起来会使人乏味。</p>
页: [1]
查看完整版本: 【GD32307E-START】+重归的GD32F307E开发板