|
【GD32E231 DIY大赛】4.实现60秒定时
[复制链接]
本帖最后由 ddllxxrr 于 2019-5-25 06:17 编辑
由于,这次大赛本人用自已搭线来先实验再画图的思想。
这个差点腰折,因为我没有用数码管芯片来管理数码管。我的这次设计思想是“简单,实用”。
也就是在日常生活中我要用它来真正的定时,从而必免饭糊了,蒸长了之类。
每个数码管直接同管脚连接。这差一点使我失去信心做下去。
然而昨天晚上我试了一下居然可以显示,我把上次频率调快了一倍,显示的居然不错。
以下是和管脚直接驱动的显示函数:
- void display(unsigned char i)
- {
- switch(i)
- {
- case 1:
- gpio_bit_reset(GPIOB,GPIO_PIN_10);
- gpio_bit_set(GPIOB,GPIO_PIN_11);
- gpio_bit_set(GPIOB,GPIO_PIN_13);
- gpio_bit_reset(GPIOB,GPIO_PIN_14);
- gpio_bit_reset(GPIOB,GPIO_PIN_15);
- gpio_bit_reset(GPIOB,GPIO_PIN_12);
- gpio_bit_reset(GPIOB,GPIO_PIN_0);
- gpio_bit_reset(GPIOB,GPIO_PIN_1);
- break;
- case 2:
- gpio_bit_set(GPIOB,GPIO_PIN_10);
- gpio_bit_set(GPIOB,GPIO_PIN_11);
- gpio_bit_reset(GPIOB,GPIO_PIN_13);
- gpio_bit_set(GPIOB,GPIO_PIN_14);
- gpio_bit_set(GPIOB,GPIO_PIN_15);
- gpio_bit_reset(GPIOB,GPIO_PIN_12);
- gpio_bit_set(GPIOB,GPIO_PIN_0);
- gpio_bit_reset(GPIOB,GPIO_PIN_1);
- break;
- case 3:
- gpio_bit_set(GPIOB,GPIO_PIN_10);
- gpio_bit_set(GPIOB,GPIO_PIN_11);
- gpio_bit_set(GPIOB,GPIO_PIN_13);
- gpio_bit_set(GPIOB,GPIO_PIN_14);
- gpio_bit_reset(GPIOB,GPIO_PIN_15);
- gpio_bit_reset(GPIOB,GPIO_PIN_12);
- gpio_bit_set(GPIOB,GPIO_PIN_0);
- gpio_bit_reset(GPIOB,GPIO_PIN_1);
- break;
- case 4:
- gpio_bit_reset(GPIOB,GPIO_PIN_10);
- gpio_bit_set(GPIOB,GPIO_PIN_11);
- gpio_bit_set(GPIOB,GPIO_PIN_13);
- gpio_bit_reset(GPIOB,GPIO_PIN_14);
- gpio_bit_reset(GPIOB,GPIO_PIN_15);
- gpio_bit_set(GPIOB,GPIO_PIN_12);
- gpio_bit_set(GPIOB,GPIO_PIN_0);
- gpio_bit_reset(GPIOB,GPIO_PIN_1);
- break;
- case 5:
- gpio_bit_set(GPIOB,GPIO_PIN_10);
- gpio_bit_reset(GPIOB,GPIO_PIN_11);
- gpio_bit_set(GPIOB,GPIO_PIN_13);
- gpio_bit_set(GPIOB,GPIO_PIN_14);
- gpio_bit_reset(GPIOB,GPIO_PIN_15);
- gpio_bit_set(GPIOB,GPIO_PIN_12);
- gpio_bit_set(GPIOB,GPIO_PIN_0);
- gpio_bit_reset(GPIOB,GPIO_PIN_1);
- break;
- case 6:
- gpio_bit_set(GPIOB,GPIO_PIN_10);
- gpio_bit_reset(GPIOB,GPIO_PIN_11);
- gpio_bit_set(GPIOB,GPIO_PIN_13);
- gpio_bit_set(GPIOB,GPIO_PIN_14);
- gpio_bit_set(GPIOB,GPIO_PIN_15);
- gpio_bit_set(GPIOB,GPIO_PIN_12);
- gpio_bit_set(GPIOB,GPIO_PIN_0);
- gpio_bit_set(GPIOB,GPIO_PIN_1);
- break;
- case 7:
- gpio_bit_set(GPIOB,GPIO_PIN_10);
- gpio_bit_set(GPIOB,GPIO_PIN_11);
- gpio_bit_set(GPIOB,GPIO_PIN_13);
- gpio_bit_reset(GPIOB,GPIO_PIN_14);
- gpio_bit_reset(GPIOB,GPIO_PIN_15);
- gpio_bit_reset(GPIOB,GPIO_PIN_12);
- gpio_bit_reset(GPIOB,GPIO_PIN_0);
- gpio_bit_reset(GPIOB,GPIO_PIN_1);
- break;
- case 8:
- gpio_bit_set(GPIOB,GPIO_PIN_10);
- gpio_bit_set(GPIOB,GPIO_PIN_11);
- gpio_bit_set(GPIOB,GPIO_PIN_13);
- gpio_bit_set(GPIOB,GPIO_PIN_14);
- gpio_bit_set(GPIOB,GPIO_PIN_15);
- gpio_bit_set(GPIOB,GPIO_PIN_12);
- gpio_bit_set(GPIOB,GPIO_PIN_0);
- gpio_bit_set(GPIOB,GPIO_PIN_1);
- break;
- case 9:
- gpio_bit_set(GPIOB,GPIO_PIN_10);
- gpio_bit_set(GPIOB,GPIO_PIN_11);
- gpio_bit_set(GPIOB,GPIO_PIN_13);
- gpio_bit_set(GPIOB,GPIO_PIN_14);
- gpio_bit_reset(GPIOB,GPIO_PIN_15);
- gpio_bit_set(GPIOB,GPIO_PIN_12);
- gpio_bit_set(GPIOB,GPIO_PIN_0);
- gpio_bit_set(GPIOB,GPIO_PIN_1);
- break;
- case 0:
- gpio_bit_set(GPIOB,GPIO_PIN_10);
- gpio_bit_set(GPIOB,GPIO_PIN_11);
- gpio_bit_set(GPIOB,GPIO_PIN_13);
- gpio_bit_set(GPIOB,GPIO_PIN_14);
- gpio_bit_set(GPIOB,GPIO_PIN_15);
- gpio_bit_set(GPIOB,GPIO_PIN_12);
- gpio_bit_reset(GPIOB,GPIO_PIN_0);
- gpio_bit_set(GPIOB,GPIO_PIN_1);
- break;
- default:
- break;
-
- }
- }
复制代码
而秒定时用TIMER2
- void Timer2_Init(void)
- {
- timer_parameter_struct timer_initpara;
- rcu_periph_clock_enable(RCU_TIMER2);
- timer_deinit(TIMER2);
- /* TIMER configuration */
- timer_initpara.prescaler = 719;
- timer_initpara.alignedmode = TIMER_COUNTER_EDGE;
- timer_initpara.counterdirection = TIMER_COUNTER_UP;
- timer_initpara.period = 99999; //2ms
- timer_initpara.clockdivision = TIMER_CKDIV_DIV1;
- timer_initpara.repetitioncounter = 0;
- timer_init(TIMER2,&timer_initpara);
- timer_interrupt_enable(TIMER2, TIMER_INT_UP); /*Enable TIMER2*/
- nvic_irq_enable(TIMER2_IRQn, 0); //Set priority to 0(0-2)
- /* auto-reload preload enable */
- timer_auto_reload_shadow_enable(TIMER2);
- /* auto-reload preload enable */
- timer_enable(TIMER2);
- }
- /*The interrupt handler function of tmer2*/
- void TIMER2_IRQHandler(void)
- {
- if(RESET != timer_interrupt_flag_get(TIMER2, TIMER_INT_FLAG_UP))
- {
- dd_flag = 1;
- }
- timer_interrupt_flag_clear(TIMER2, TIMER_INT_FLAG_UP);
- }
复制代码
现在就差按键和报警了,等以后再分解。
|
|