OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 4027|回复: 1

无法给寄存器赋值,加switch后可以用了为什么

[复制链接]

3

主题

8

帖子

0

精华

新手上路

积分
34
金钱
34
注册时间
2021-3-15
在线时间
6 小时
发表于 2022-4-8 22:22:51 | 显示全部楼层 |阅读模式
1金钱
#include "sys.h"
#include "delay.h"
#include "usart.h"
#include "led.h"
#include "key.h"
#include "timer.h"
#include "can.h"
#include "Command.h"
#include "math.h"
#include "control.h"
#include "StepMotor.h"

void Run(void);


int main(void)
{
        u8 cnt=0;
        u8 flag=0;
        HAL_Init();
        Stm32_Clock_Init(360,25,2,8);
        delay_init(180);                     
        LED_Init();
        KEY_Init();
        uart_init(115200);
        uart2_init(115200);
        Step1_init(1999,90-1);
        Step2_init(1999,90-1);
        TIM3->CCR4=0;//1رÕ2½½øμç»ú
        TIM4->CCR1=0;
        CAN1_Mode_Init(CAN_SJW_1TQ,CAN_BS2_6TQ,CAN_BS1_8TQ,6,CAN_MODE_NORMAL);
        ControlJiazai();
        delay_ms(10);
        Control_CanSet_SpeedPID(50,5000);
        delay_ms(50);
        Control_CanSend_Maxspeed(5000);
        delay_ms(50);
        Control_CanSend_Add(500);
        delay_ms(50);
    Control_CanSend_Command(0);//¿ØÖÆÃüáî //Ëù¶èÄ£ê½
    delay_ms(3000);
        while(1)
        {
                if(ps_key[0]==1 ) //°′Ï°′¼ü
                {
                        printf("O\r\n");//open ¼D×óÕÅ¿a
                //        flag=1;
                }
                if(ps_key[1]==1 )
                {
                        printf("C\r\n");//close ¼D×ó1رÕ
                        //flag=2;
                }
                if(ps_key[2]==1 )//°′¼ü3~diancifa6
                {
                        printf("S\r\n");//stop,¼D×óí£Ö1
                        //flag=3;
            }
                if(ps_key[3]==1)//°′¼ü3~diancifa6
                {
                        DIR1=0;
                        TIM3->CCR4=1000;
                        printf("CCR4=%d\r\n",TIM3->CCR4);
                        cnt=0;
                                printf("cnt=%d\r\n",cnt);
            }
                if(ps_key[4]==1 )//°′¼ü3~diancifa6
                {
                        DIR1=1;
                        TIM3->CCR4=1000;
                        printf("CCR4=%d\r\n",TIM3->CCR4);
                        cnt=0;
                        printf("cnt=%d\r\n",cnt);
            }
               
                if(ps_key[5]==1 )//°′¼ü3~diancifa6
                {
                        printf("r\r\n");//R,Dy×a 90¶è
                //        flag=6;
            }
                if(ps_key[6]==1 )//°′¼ü3~diancifa6
                {
                        printf("R\r\n");//R,Dy×a180¶è
                //        flag=7;
            }
                                if(ps_key[7]==1 )//°′¼ü3~diancifa6
                {
                        printf("l\r\n");//R,Dy×a 90¶è
                //        flag=8;
            }

                if(ps_key[8]==1 )//°′¼ü3~diancifa6
                {
                        DIR2=0;
                        TIM4->CCR1=1000;
                        printf("%d",TIM4->CCR1);
                        cnt=0;
            }
                if(ps_key[9]==1 )//°′¼ü3~diancifa6
                {
                        DIR2=1;
                        TIM4->CCR1=1000;
                        printf("%d",TIM4->CCR1);
                        cnt=0;
            }

//                switch(flag)//·àÖ1ᬰ′
//                {
//                       
//                        case 1:if(ps_key[0] == 0) flag=0;break;
//                        case 2:if(ps_key[1] == 0) flag=0;break;
//                        case 3:if(ps_key[2] == 0) flag=0;break;
//                        case 6:if(ps_key[5] == 0) flag=0;break;
//                        case 7:if(ps_key[6] == 0) flag=0;break;
//                        case 8:if(ps_key[7] == 0) flag=0;break;
//                        default:break;
//                }
               
                cnt++;
                        printf("cnt=%d\r\n",cnt);
                if(cnt>2)
                {
                        cnt=0;
                        TIM3->CCR4=0;
                        TIM4->CCR1=0;
                }
                Run();
                delay_ms(10);
        }
}

void Run(void)
{
          int Vx=0,Vy=0,W=0;
          if(ps_left[0]>=26)        Vx=-1000;
                if(ps_left[0]==0)       Vx=1000;
                if(ps_left[1]==0)       Vy=-1000;
                if(ps_left[1]>=26)      Vy=1000;
       
                if(ps_right[0]==0)      Vx=-2000;
                if(ps_right[0]>=28)     Vx=2000;
                if(ps_right[1]==0)      Vy=2000;
                if(ps_right[1]>=28)     Vy=-2000;
                if(ps_key[9]==1)      
                {
                        W=10;
                }
                if(ps_key[10]==1)      
                {
                        W=-10;
                }
                ThreeWheelControl(Vx,Vy,W,0);
}

注释掉那段switch后无法给CCR赋值输出一直是0,但是加上switch以后就能了不知道为什么

正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

13

主题

643

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
2432
金钱
2432
注册时间
2019-12-28
在线时间
527 小时
发表于 2022-4-12 17:29:59 | 显示全部楼层
没看出来什么原因,帮顶
回复

使用道具 举报

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

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-2-27 14:29

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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