TA的每日心情 | 无聊 2018-8-2 09:51 |
---|
签到天数: 276 天 连续签到: 1 天 [LV.8]以坛为家I
|
本帖最后由 lmt50222 于 2015-6-29 16:25 编辑
上周六就收到了板,因为下班了,所以就没有开箱,今天早上一来就开箱并拍照,打开快递,首先是一个简单干净的白色盒了,印有GD32和ARM
接下来打开包装,静电包装袋里安静的躺着一块红色的开发板。
拆开静电包装袋,拿出开发板,先看正面
再看反面
个人感觉做工还是比较粗糙,下面是和飞思卡尔的开发板对比,飞思卡尔采用的是镀金板,GD32是镀锡板。
也是先来正面对比
接着再来反面的
开发板看完了,那么,接下来就可以开始建立工程文件了。
首先先建好GD32-Demo文件夹,并再建立User,Fwlib,Cmsis三个文件夹。
在安装好所有程序后打开Keil
选择好GD32F150R8芯片,确认后不要Keil自带的启动文件。
这样就可以打开GD32开发板资料,(下载请到公布的地方下载,这里就不发了),把CMSIS和Peripherals里的(inc,src)和Template文件夹里的文件复制到新建的工程文件夹里面。并增加到Keil里(特别注意需要把startup_gd32f1x0.s增加)。
再设置Keil相关项目,需要定义“USE_STDPERIPH_DRIVER”可以在"gd32f1x0.h"头文件里找到,意思为使用标准库文件。并增加头文件地址
选择CMSIS-DAP Debugger仿真器,并设置好相关下载参数。
到此就设置完成了,现在就可以自己增加代码了。
特别提醒:因开发板未焊接外部晶振,所以开发板的时钟为内部高速8M。
现在以TIMER6定时500ms为例,写自己的代码。
初始化TIMER6定时器:
void Time6_Init(void)
{
TIMER_BaseInitPara TIMER_BaseInitParaStructure;
NVIC_InitPara NVIC_InitStructure;
RCC_APB1PeriphClock_Enable(RCC_APB1PERIPH_TIMER6,ENABLE); //开启TIMER6时钟
//主频为8M,如需更改频率需在system_gd32f1x0.c文件内修改或者焊接外部晶振
TIMER_BaseInitParaStructure.TIMER_Prescaler = 8000 - 1;//Fs/(8000-1)=1MS
TIMER_BaseInitParaStructure.TIMER_CounterMode = TIMER_COUNTER_UP;//向上计数
TIMER_BaseInitParaStructure.TIMER_Period = 500;//500ms
TIMER_BaseInitParaStructure.TIMER_ClockDivision = TIMER_CDIV_DIV1;//时钟不分频
TIMER_BaseInit(TIMER6,&TIMER_BaseInitParaStructure);
TIMER_INTConfig(TIMER6,TIMER_INT_UPDATE,ENABLE);//更新中断
TIMER_Enable(TIMER6,ENABLE); //开TIMER6
NVIC_InitStructure.NVIC_IRQ = TIMER6_DAC_IRQn; //TIMER6
NVIC_InitStructure.NVIC_IRQPreemptPriority = 0; //主优先
NVIC_InitStructure.NVIC_IRQSubPriority = 0; //次优先
NVIC_InitStructure.NVIC_IRQEnable = ENABLE; //使能TIMER6
NVIC_Init(&NVIC_InitStructure);
}
TIMER6中断
void TIM6_DAC_IRQHandler(void)
{
if(TIMER_GetIntBitState(TIMER6,TIMER_INT_UPDATE) != RESET)//查询更新中断
{
TIMER_ClearIntBitState(TIMER6,TIMER_INT_UPDATE);//清更新中断标志位
GPIO_WriteBit(GPIOC,GPIO_PIN_10,\
(BitState)(1 - GPIO_ReadOutputBit(GPIOC,GPIO_PIN_10)));//LED以1Hz频率闪烁
GPIO_WriteBit(GPIOC,GPIO_PIN_11,\
(BitState)(1 - GPIO_ReadOutputBit(GPIOC,GPIO_PIN_11)));
}
}
注意:如果有不需要的外设可以在"gd32f1x0_conf.h"文件中注释掉相应头文件即可.
比如,LED灯闪烁需要用到:定时器,中断,时钟配置,GPIO,
//#include "gd32f1x0_adc.h" 模数转换
//#include "gd32f1x0_cec.h" CEC控制器
//#include "gd32f1x0_crc.h" CRC校验
//#include "gd32f1x0_cmp.h" 比较器
//#include "gd32f1x0_dac.h" 数模转换
#include "gd32f1x0_mcudbg.h" MCU调试
//#include "gd32f1x0_dma.h" DMA数据传输
//#include "gd32f1x0_exti.h" 外部中断
//#include "gd32f1x0_fmc.h" 闪存
#include "gd32f1x0_gpio.h" GPIO
#include "gd32f1x0_syscfg.h" 系统配置
//#include "gd32f1x0_i2c.h" IIC
//#include "gd32f1x0_iwdg.h" 独立看门狗
//#include "gd32f1x0_pwr.h" 备份
#include "gd32f1x0_rcc.h" 时钟
//#include "gd32f1x0_rtc.h" RTC
//#include "gd32f1x0_spi.h" SPI通信
#include "gd32f1x0_timer.h" 定时器
//#include "gd32f1x0_usart.h" 串口
//#include "gd32f1x0_wwdg.h" 窗口看门狗
#include "gd32f1x0_misc.h" 中断配置
//#include "gd32f1x0_tsi.h" 触摸按键
无关的可以注释掉
现在就可编译文件了,按下编译,无错误和警告。。
下载程序在开发板就可以看见LED4,LED5以1HZ频率闪烁了。
是不是很简单呢...
|
|