2367|1

1万

帖子

16

TA的资源

版主

楼主
 

【GD32E231 DIY大赛】4.实现60秒定时 [复制链接]

本帖最后由 ddllxxrr 于 2019-5-25 06:17 编辑

由于,这次大赛本人用自已搭线来先实验再画图的思想。
这个差点腰折,因为我没有用数码管芯片来管理数码管。我的这次设计思想是“简单,实用”。
也就是在日常生活中我要用它来真正的定时,从而必免饭糊了,蒸长了之类。
每个数码管直接同管脚连接。这差一点使我失去信心做下去。
然而昨天晚上我试了一下居然可以显示,我把上次频率调快了一倍,显示的居然不错。

以下是和管脚直接驱动的显示函数:

  1. void display(unsigned char i)
  2. {
  3.      switch(i)
  4.                  {
  5.                          case 1:
  6.                                     gpio_bit_reset(GPIOB,GPIO_PIN_10);
  7.              gpio_bit_set(GPIOB,GPIO_PIN_11);
  8.              gpio_bit_set(GPIOB,GPIO_PIN_13);
  9.              gpio_bit_reset(GPIOB,GPIO_PIN_14);
  10.              gpio_bit_reset(GPIOB,GPIO_PIN_15);
  11.              gpio_bit_reset(GPIOB,GPIO_PIN_12);
  12.              gpio_bit_reset(GPIOB,GPIO_PIN_0);
  13.              gpio_bit_reset(GPIOB,GPIO_PIN_1);                          
  14.                              break;
  15.                          case 2:
  16.                                      gpio_bit_set(GPIOB,GPIO_PIN_10);
  17.              gpio_bit_set(GPIOB,GPIO_PIN_11);
  18.              gpio_bit_reset(GPIOB,GPIO_PIN_13);
  19.              gpio_bit_set(GPIOB,GPIO_PIN_14);
  20.              gpio_bit_set(GPIOB,GPIO_PIN_15);
  21.              gpio_bit_reset(GPIOB,GPIO_PIN_12);
  22.              gpio_bit_set(GPIOB,GPIO_PIN_0);
  23.              gpio_bit_reset(GPIOB,GPIO_PIN_1);                          
  24.                              break;
  25.                          case 3:
  26.                                      gpio_bit_set(GPIOB,GPIO_PIN_10);
  27.              gpio_bit_set(GPIOB,GPIO_PIN_11);
  28.              gpio_bit_set(GPIOB,GPIO_PIN_13);
  29.              gpio_bit_set(GPIOB,GPIO_PIN_14);
  30.              gpio_bit_reset(GPIOB,GPIO_PIN_15);
  31.              gpio_bit_reset(GPIOB,GPIO_PIN_12);
  32.              gpio_bit_set(GPIOB,GPIO_PIN_0);
  33.              gpio_bit_reset(GPIOB,GPIO_PIN_1);                          
  34.                              break;
  35.                          case 4:
  36.                                      gpio_bit_reset(GPIOB,GPIO_PIN_10);
  37.              gpio_bit_set(GPIOB,GPIO_PIN_11);
  38.              gpio_bit_set(GPIOB,GPIO_PIN_13);
  39.              gpio_bit_reset(GPIOB,GPIO_PIN_14);
  40.              gpio_bit_reset(GPIOB,GPIO_PIN_15);
  41.              gpio_bit_set(GPIOB,GPIO_PIN_12);
  42.              gpio_bit_set(GPIOB,GPIO_PIN_0);
  43.              gpio_bit_reset(GPIOB,GPIO_PIN_1);                          
  44.                              break;
  45.                          case 5:
  46.                                      gpio_bit_set(GPIOB,GPIO_PIN_10);
  47.              gpio_bit_reset(GPIOB,GPIO_PIN_11);
  48.              gpio_bit_set(GPIOB,GPIO_PIN_13);
  49.              gpio_bit_set(GPIOB,GPIO_PIN_14);
  50.              gpio_bit_reset(GPIOB,GPIO_PIN_15);
  51.              gpio_bit_set(GPIOB,GPIO_PIN_12);
  52.              gpio_bit_set(GPIOB,GPIO_PIN_0);
  53.              gpio_bit_reset(GPIOB,GPIO_PIN_1);                          
  54.                              break;
  55.                          case 6:
  56.                                      gpio_bit_set(GPIOB,GPIO_PIN_10);
  57.              gpio_bit_reset(GPIOB,GPIO_PIN_11);
  58.              gpio_bit_set(GPIOB,GPIO_PIN_13);
  59.              gpio_bit_set(GPIOB,GPIO_PIN_14);
  60.              gpio_bit_set(GPIOB,GPIO_PIN_15);
  61.              gpio_bit_set(GPIOB,GPIO_PIN_12);
  62.              gpio_bit_set(GPIOB,GPIO_PIN_0);
  63.              gpio_bit_set(GPIOB,GPIO_PIN_1);                          
  64.                              break;
  65.                          case 7:
  66.                                      gpio_bit_set(GPIOB,GPIO_PIN_10);
  67.              gpio_bit_set(GPIOB,GPIO_PIN_11);
  68.              gpio_bit_set(GPIOB,GPIO_PIN_13);
  69.              gpio_bit_reset(GPIOB,GPIO_PIN_14);
  70.              gpio_bit_reset(GPIOB,GPIO_PIN_15);
  71.              gpio_bit_reset(GPIOB,GPIO_PIN_12);
  72.              gpio_bit_reset(GPIOB,GPIO_PIN_0);
  73.              gpio_bit_reset(GPIOB,GPIO_PIN_1);                          
  74.                              break;
  75.                          case 8:
  76.                                      gpio_bit_set(GPIOB,GPIO_PIN_10);
  77.              gpio_bit_set(GPIOB,GPIO_PIN_11);
  78.              gpio_bit_set(GPIOB,GPIO_PIN_13);
  79.              gpio_bit_set(GPIOB,GPIO_PIN_14);
  80.              gpio_bit_set(GPIOB,GPIO_PIN_15);
  81.              gpio_bit_set(GPIOB,GPIO_PIN_12);
  82.              gpio_bit_set(GPIOB,GPIO_PIN_0);
  83.              gpio_bit_set(GPIOB,GPIO_PIN_1);                          
  84.                              break;
  85.                          case 9:
  86.                                      gpio_bit_set(GPIOB,GPIO_PIN_10);
  87.              gpio_bit_set(GPIOB,GPIO_PIN_11);
  88.              gpio_bit_set(GPIOB,GPIO_PIN_13);
  89.              gpio_bit_set(GPIOB,GPIO_PIN_14);
  90.              gpio_bit_reset(GPIOB,GPIO_PIN_15);
  91.              gpio_bit_set(GPIOB,GPIO_PIN_12);
  92.              gpio_bit_set(GPIOB,GPIO_PIN_0);
  93.              gpio_bit_set(GPIOB,GPIO_PIN_1);                          
  94.                              break;
  95.                          case 0:
  96.                                      gpio_bit_set(GPIOB,GPIO_PIN_10);
  97.              gpio_bit_set(GPIOB,GPIO_PIN_11);
  98.              gpio_bit_set(GPIOB,GPIO_PIN_13);
  99.              gpio_bit_set(GPIOB,GPIO_PIN_14);
  100.              gpio_bit_set(GPIOB,GPIO_PIN_15);
  101.              gpio_bit_set(GPIOB,GPIO_PIN_12);
  102.              gpio_bit_reset(GPIOB,GPIO_PIN_0);
  103.              gpio_bit_set(GPIOB,GPIO_PIN_1);                          
  104.                              break;
  105.                          default:
  106.                                      break;
  107.                                     
  108.                  }

  109. }       
复制代码


而秒定时用TIMER2

  1. void Timer2_Init(void)
  2. {
  3.     timer_parameter_struct timer_initpara;

  4.     rcu_periph_clock_enable(RCU_TIMER2);

  5.     timer_deinit(TIMER2);
  6.     /* TIMER configuration */
  7.     timer_initpara.prescaler         = 719;
  8.     timer_initpara.alignedmode       = TIMER_COUNTER_EDGE;
  9.     timer_initpara.counterdirection  = TIMER_COUNTER_UP;
  10.     timer_initpara.period            = 99999;                                        //2ms
  11.     timer_initpara.clockdivision     = TIMER_CKDIV_DIV1;
  12.     timer_initpara.repetitioncounter = 0;
  13.     timer_init(TIMER2,&timer_initpara);

  14.         timer_interrupt_enable(TIMER2, TIMER_INT_UP);        /*Enable TIMER2*/
  15.         nvic_irq_enable(TIMER2_IRQn, 0);                                //Set priority to 0(0-2)

  16.     /* auto-reload preload enable */
  17.     timer_auto_reload_shadow_enable(TIMER2);
  18.     /* auto-reload preload enable */
  19.     timer_enable(TIMER2);
  20. }


  21. /*The interrupt handler function of tmer2*/
  22. void TIMER2_IRQHandler(void)
  23. {
  24.         if(RESET != timer_interrupt_flag_get(TIMER2, TIMER_INT_FLAG_UP))
  25.         {
  26.                dd_flag = 1;
  27.         }
  28.         timer_interrupt_flag_clear(TIMER2, TIMER_INT_FLAG_UP);
  29. }
复制代码


现在就差按键和报警了,等以后再分解。


此帖出自GD32 MCU论坛

最新回复

谢谢分享!  详情 回复 发表于 2019-5-27 08:22
点赞 关注(1)
个人签名http://shop34182318.taobao.com/
https://shop436095304.taobao.com/?spm=a230r.7195193.1997079397.37.69fe60dfT705yr
 

回复
举报

172

帖子

0

TA的资源

宇宙尘埃

沙发
 
谢谢分享!
此帖出自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
快速回复 返回顶部 返回列表