蜂鸟E203开源RISC—V(DDR200T按键控制直流电机)

功能现象

按键SOC_BUTTON_U_GPIO_MASK持续按下使其正转加速,按键SOC_BUTTON_D_GPIO_MASK持续按下使其正转减速,按键SOC_BUTTON_L_GPIO_MASK持续按下使其反转加速,按键SOC_BUTTON_R_GPIO_MASK持续按下使其反转减速,按中间按键使其停止。

基于自带pilc模板改编,主要是在中断回调函数里,写一些pwm的控制,

 

void plic_btn_handler(void)
{
    int mask;

    printf("Enter PLIC GPIOA Interrupt\n");
    mask = gpio_clear_interrupt(GPIOA);
    switch (mask) {
        case SOC_BUTTON_U_GPIO_MASK:


    		 gpio_write(GPIOB,1<<2,0);
    		 gpio_write(GPIOB,1<<4,1);
        	i++;
            ch0=100*i;
            if(ch0>=1000)
            {
            	ch0=999;
            }
            if(ch0<=0)
                {
                	ch0=0;
                }
            pwm_timer_channel_config(PWM_TIMER2, PWM_TIMER_TH_CHANNEL0, ch0, ADV_TIMER_OP_RSTSET);
           gpio_toggle(GPIOA, SOC_LED_0_GPIO_MASK);
            break;

        case SOC_BUTTON_D_GPIO_MASK:
        		i--;
        		gpio_write(GPIOB,1<<2,0);
        		gpio_write(GPIOB,1<<4,1);
        		ch0=100*i;
        			if(ch0>=1000)
        				 {
        				   ch0=999;
        				 }
        			if(ch0<=0)
        				{
        				 ch0=0;
        				}

        pwm_timer_channel_config(PWM_TIMER2, PWM_TIMER_TH_CHANNEL0, ch0, ADV_TIMER_OP_RSTSET);
            gpio_toggle(GPIOA, SOC_LED_1_GPIO_MASK);
            printf("LED 1 Toggled \n");
            break;
        case SOC_BUTTON_L_GPIO_MASK:
        	i++;
    		gpio_write(GPIOB,1<<2,1);
    		gpio_write(GPIOB,1<<4,0);
    		ch0=100*i;
    		       if(ch0>=1000)
    		        				 {
    		        				   ch0=999;
    		        				 }
    		       if(ch0<=0)
    		        				{
    		        				 ch0=0;
    		        				}
    	pwm_timer_channel_config(PWM_TIMER2, PWM_TIMER_TH_CHANNEL0, ch0, ADV_TIMER_OP_RSTSET);

       
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值