5863|2

821

帖子

0

TA的资源

一粒金砂(高级)

楼主
 

[GD32E231 DIY大赛](一):开发环境搭建+TIMER5 [复制链接]

      这次有幸获得了“兆易创新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”支持文件;



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


3、在keil中进行相关设置;



4、在以上环节中还要进行一项重要配置,要添加内核支持文件,不然编译时会出现找不到相关文件。如下图:


5、编译成功;


三、测试实验
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”;




四、测试结果



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

最新回复

楼主有没有GigaDevice.GD32E23x_DFP.1.0.0.pack,发一份给我。谢谢   详情 回复 发表于 2020-6-3 09:08
点赞 关注(1)
 

回复
举报

1

帖子

0

TA的资源

一粒金砂(初级)

沙发
 

楼主有没有GigaDevice.GD32E23x_DFP.1.0.0.pack,发一份给我。谢谢

此帖出自GD32 MCU论坛

点评

官网上应该有的,传一份你看看能不能用上。  详情 回复 发表于 2020-6-3 12:39
 
 
 

回复

821

帖子

0

TA的资源

一粒金砂(高级)

板凳
 
本帖最后由 lising 于 2020-6-3 12:42 编辑
COXO 发表于 2020-6-3 09:08 楼主有没有GigaDevice.GD32E23x_DFP.1.0.0.pack,发一份给我。谢谢

官网上应该有的,传一份你看看能不能用上。

GD32E23x_AddOn1_V1.0.0.rar (1.71 MB, 下载次数: 6)

此帖出自GD32 MCU论坛
 
 
 

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

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/10 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表