社区导航

 

搜索
查看: 1061|回复: 0

[经验分享] [GD32E231 DIY大赛](一):开发环境搭建+TIMER5

[复制链接]

776

TA的帖子

0

TA的资源

一粒金砂(高级)

Rank: 3Rank: 3

发表于 2019-5-1 20:58 | 显示全部楼层 |阅读模式
      这次有幸获得了“兆易创新GD32E231 DIY大赛”参赛资格,非常高兴。借此机会向大赛组办者EEWORLD及兆易创新表示感谢!同时祝愿兆易创新公司在发展的道路上做出更多、更好的产品!
      本次实验所搭建的开发环境主要是在兆易创新提供的“GD32E23x_Demo_Suites_V1.0.1”为基础修改而成;实验内容为利用GD32E231C_START开发板板载资源LED1~LED4及GD32E231C8T6外设基本定时器TIMER5,由TIMER5每100ms产生一次中断,LED1~LED4按100ms时间间隔依次点亮,然后再按100ms时间间隔依次熄灭。


一、实验资源
1、GD32E231C_START开发板;
2、Keil v5.27.1.0;
3、GigaDevice.GD32E23x_DFP.1.0.0.pack;

4、GD32E23x_Demo_Suites_V1.0.1;
5、GD32E231C_START开发板相关文档;

二、开发环境搭建

1、安装“GigaDevice.GD32E23x_DFP.1.0.0.pack”支持文件;
Image 002.png


2、建立工程项目文件,以“GD32E23x_Demo_Suites_V1.0.1”为基础进行了小的更改,并且把“Utilities”文件夹也包含进了工程项目文件;
Image 004.png

3、在keil中进行相关设置;
Image 013.png
Image 009.png
Image 015.png
4、在以上环节中还要进行一项重要配置,要添加内核支持文件,不然编译时会出现找不到相关文件。如下图:
Image 007.png

5、编译成功;
Image 006.png

三、测试实验
1、对基本定时器TIMER5进行配置,这里使能了TIMER5中断并启用TIMER5的NVIC请求。主要代码如下:
  1. void TIMER5_Config(void)
  2. {
  3.         timer_parameter_struct timer_initpara;                 //计时器初始化参数结构定义

  4.         rcu_periph_clock_enable(RCU_TIMER5);

  5.         timer_deinit(TIMER5);

  6.         /*prescaler(预分频器值):72M/(719+1)=100KHz
  7.                 period(周期值):在100KHz计数频率下(49999+1)/10000=500ms
  8.                 (19999+1)/100000=200ms
  9.         */
  10.         timer_initpara.prescaler         = 719;                                                                //预分频器值
  11.         timer_initpara.alignedmode       = TIMER_COUNTER_EDGE;//对齐模式
  12.         timer_initpara.counterdirection  = TIMER_COUNTER_UP;        //向上计数
  13.         timer_initpara.period            = 19999;                                                        //周期值
  14.         timer_initpara.clockdivision     = TIMER_CKDIV_DIV1;
  15.         timer_initpara.repetitioncounter = 0;
  16.         timer_init(TIMER5,&timer_initpara);

  17.         timer_interrupt_enable(TIMER5, TIMER_INT_UP);//使能TIMER5中断
  18.         nvic_irq_enable(TIMER5_IRQn, 0);//启用TIMER5的NVIC请求,优先级为0(0~3)
  19.        
  20.         timer_auto_reload_shadow_enable(TIMER5);
  21.         timer_enable(TIMER5);                  
  22. }
复制代码



2、LED配置,这里要用两个函数对IO口进行配置。代码如下:
  1. void LED_PORT_Init(void)
  2. {
  3.         rcu_periph_clock_enable(RCU_GPIOA);
  4.        
  5.         gpio_mode_set(LED_PORT,
  6.                                                                 GPIO_MODE_OUTPUT,
  7.                                                                 GPIO_PUPD_NONE ,
  8.                                                                 LED1|LED2|LED3|LED4);
  9.        
  10.         gpio_output_options_set(LED_PORT,
  11.                                                                                                         GPIO_OTYPE_PP,
  12.                                                                                                         GPIO_OSPEED_50MHZ,
  13.                                                                                                         LED1|LED2|LED3|LED4);

  14. }
复制代码



3、中断函数。代码如下:
  1. void TIMER5_IRQHandler(void)
  2. {
  3.         static uint8_t timer_cont=0;
  4.         if(RESET != timer_interrupt_flag_get(TIMER5, TIMER_INT_FLAG_UP))
  5.         {
  6.                 timer_cont++;
  7.                 if(timer_cont>=5)
  8.                 {
  9.                         timer_cont=0;
  10.                 }       
  11.                 switch(timer_cont)
  12.                 {
  13.                         case 1:gpio_bit_toggle(LED_PORT, LED1);break;
  14.                         case 2:gpio_bit_toggle(LED_PORT, LED2);break;
  15.                         case 3:gpio_bit_toggle(LED_PORT, LED3);break;
  16.                         case 4:gpio_bit_toggle(LED_PORT, LED4);break;
  17.                         default:break;
  18.                 }
  19.         }
  20.         timer_interrupt_flag_clear(TIMER5, TIMER_INT_FLAG_UP);
  21. }
复制代码



4、调试及下载,开发板上搭载的调试器可被keil识别为“CMSIS-DAP”;
Image 017.png
Image 003.png
Image 012.png

四、测试结果
微信图片_20190501203422.jpg
Image 018.png

五、总结
      这次搭建开发环境及TIMER5外设资源实验对兆易创新Cortex®-M23内核的GD32E231系列产品有了初步的认识和了解,是一个良好的开始,这将为后续的各项实验建立了基础。实验中感觉官方所提供的库函数比较简洁易用,不过所提供的例程只有四个,如果再全面一些就更好了。另外,查询函数时不能跳转不知是什么原因。
此帖出自GD32 MCU论坛


回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

关闭

站长推荐上一条 /1 下一条

  • 论坛活动 E手掌握

    扫码关注
    EEWORLD 官方微信

  • EE福利  唾手可得

    扫码关注
    EE福利 唾手可得

Archiver|手机版|小黑屋|电子工程世界 ( 京ICP证 060456 )

GMT+8, 2019-7-19 01:05 , Processed in 0.091662 second(s), 18 queries , Gzip On, MemCache On.

快速回复 返回顶部 返回列表