社区导航

 

搜索
查看: 433|回复: 1

[经验分享] 【GD32E231 DIY大赛】4.实现60秒定时

[复制链接]

1万

TA的帖子

15

TA的资源

版主

Rank: 6Rank: 6

发表于 2019-5-25 06:00 | 显示全部楼层 |阅读模式
本帖最后由 ddllxxrr 于 2019-5-25 06:17 编辑

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

  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论坛
http://shop34182318.taobao.com/
https://shop436095304.taobao.com/?spm=a230r.7195193.1997079397.37.69fe60dfT705yr


回复

使用道具 举报

171

TA的帖子

0

TA的资源

宇宙尘埃

发表于 2019-5-27 08:22 | 显示全部楼层
谢谢分享!


回复

使用道具 举报

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

关闭

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

  • 论坛活动 E手掌握

    扫码关注
    EEWORLD 官方微信

  • EE福利  唾手可得

    扫码关注
    EE福利 唾手可得

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

GMT+8, 2019-10-19 13:07 , Processed in 0.097666 second(s), 16 queries , Gzip On, MemCache On.

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