51单片机蓝牙遥控小车原理?

147 2024-09-05 07:05

一、51单片机蓝牙遥控小车原理?

51单片机蓝牙遥控小车的实现原理如下:

1. 硬件部分:

(1)51单片机:使用51单片机控制小车进行控制。

(2)蓝牙模块:使用蓝牙模块连接手机和小车系统,将手机端发送过来的指令通过蓝牙模块发送给单片机,从而控制小车的运动。

(3)小车平台:包括小车底盘、电机、电池组等,用于实现小车的运动和控制。

(4)电路板:将蓝牙模块、电机驱动电路、单片机等部分进行集成和连接。

2. 软件部分:

(1)为手机编写相应的控制APP:包括控制小车的各种运动,如转弯、加速、刹车等。

(2)为单片机编写控制程序:通过单片机控制车载电机,实现小车的运动。具体可以通过连接电机驱动器控制电机,以控制车的运动,使车体跟随手柄的操作进行运动。

当手机端的控制APP接收到操作指令后,会将指令通过蓝牙模块发送给小车系统,由单片机接收指令并转化为控制电机的信号。通过控制电机的转向、速度大小等参数来实现小车的前进、后退、转弯等运动,从而完成小车的遥控控制。

总之,51单片机蓝牙遥控小车的实现原理就是将手机端的操作指令通过蓝牙模块与单片机进行通信,并通过单片机驱动电机控制小车完成各种运动。

二、小车遥控器怎么换电池?

1、按压遥控器后部按钮,取出遥控器中的钥匙。

2、用螺丝刀打开钥匙锁扣,并沿着开口划开钥匙。

3、取出旧电池,并观察电池型号。

4、按照旧电池型号购买新电池,更换新电池,将新电池压实,注意不要触碰另一侧电路板。

5、用手将遥控器按压抠实。

6、将钥匙装回去即可成功更换汽车遥控器电池。

关于更换车钥匙电池的注意事项如下:

1、扳开钥匙时防止细小零件掉落、损坏。

2、电池型号要与原装电池型号相同。

三、小车遥控器咋样换电池?

拆除钥匙环,用1元硬币卡在钥匙上面一个凹槽上面后,用点扳动硬币(要舍得下手),打开后更换CR1620纽扣电池,记得区分正负极(正极下,负极上)。按照原样安装到位。

初始化:更换钥匙后需要初始化才可以恢复遥控功能:钥匙插入点火孔后按住钥匙上锁车键后旋转至车子初始化位置(就是点火前一档,整车通电但不点火哪一档)大约8秒(可以多点,有说14秒的,我按了15秒),保持按住锁车键状态回到最初位置,放开钥匙后几秒后就可以了。

扩展资料

1,打开遥控器仓:遥控器底部有个凹槽,用硬币插进去旋转,使遥控器外壳卡扣打开,取出遥控器主板:遥控器主板被一圈橡胶防水包裹,将其取出并移除防水橡胶,然后既可以更换新电池了。

2,电动车遥控器是利用无线电信号对远方的电动车进行控制的遥控设备。这些信号被远方的电动车接收后,可以指令或驱动各种相应的机械或者电子设备,去完成各种操作,如闭合电路,移动手柄,开动电机,之后再由这些机械进行需要的操作。

作为一种与红外遥控器相补充的遥控器种类,在电动车,汽车的遥控控制及防盗领域得到了广泛的应用。

3,目前使用的无线遥控器使用国家规定的UHF频段,其传播特性和光近似,直线传播,绕射较小,发射器和接收器之间如有墙壁阻挡将大大打折遥控距离,如果是钢筋混泥土的墙壁,由于导体对电波的吸收作用,影响更甚。

4,误码小,由于编码上的优势,使得接收器在没有收到本机码时的误动作几乎为0,

只要能打开,见到电池,就能换。

一般只有两种:

其一,有螺丝坚固的,拧开螺丝即可;

其二,没有螺丝的,找到缝隙撬开即可,其中,缝隙比较隐蔽的,就是拔出机械钥匙才能见到缝隙的。

四、用单片机制作一辆遥控小车的成本要多少?

我做的qibot小车,可以追光、超声波避障、巡线、遥控,成本200多点吧,主要是用的铝合金车身,控制系统用的pic18单片机。如果想入门的话,可以考虑使用51、AVR、PIC系列的8位单片机,复杂的可以使用ARM。

五、遥控小车用什么电机比较好?

首先:电机是不能用单片机直接控制的!!一个电机就算是小马达它最小的电流也有100MA吧?这个电流对于单片机来说实在是太大了!!一下就把单片机给烧坏了。

要是用步进电机那电流就更大了。

所以你要用一个电机控制芯片,比方说是:LM298。

有这个LM298的话,你1KHZ的频率是可以的。

六、遥控飞机用什么电池好?

  模型遥控飞机要用 镍氢电池或者锂电池 , 至少要使用南孚碱性电池;玩具遥控飞机, 发射的功率不大, 失控了也不危险,遥控器采用普通一次性电池即可以;而电动直升机, 三通道的肯定是玩具级,遥控器 可以使用普通电池。

七、汽车遥控电池用什么牌子?

南孚电池!

南孚传应纽扣电池采用了高能黄金底,电池的底部为金黄色,看着就有些高大上的感觉,相比普通的纽扣电池,黄金底能够很好的提高导电性能,同时增强了脉冲电力,对于远距离遥控更耐用,这个功能对于车钥匙来说,再合适不过啦

八、遥控车用什么电池?

动力锂电池是汽车遥控模型配件的重要组成部分,目前主流是锂聚合物电池,并且种类齐全,最适合遥控汽车电池。在电池充电器中,要选择具有平衡功能的智能充电器。

遥控汽车蓄电池要充电时,也要注意充电器,一般使用充电器有平衡充电功能。

由于锂离子电池的特性,在使用锂离子电池后,随着电压的下降,不同电池之间会出现电压差。因此,建议使用锂离子电池平衡充电模式对锂离子电池进行充电。

九、小车空调清洗用什么品牌

小车空调清洗用什么品牌

随着人们生活质量的不断提高,汽车已经成为我们生活中不可或缺的交通工具之一。而随之而来的是对车辆维护保养的需求也越来越高。小车空调作为汽车中的重要设备,它的维护对驾乘者的健康与舒适至关重要。那么,小车空调清洗应该选择什么品牌呢?本文将为您详细介绍几个知名品牌以助您做出明智选择。

1. 品牌A

品牌A是国内汽车空调清洗行业的知名品牌,以其出色的产品质量和先进的技术设备在市场上广受好评。该品牌的清洗液具有良好的除菌、除味、杀菌的效果,能够有效去除空调系统中的污垢和异味。此外,品牌A的清洗设备也非常先进,能够彻底清洗空调系统中的各个部件,保证清洗效果的彻底。

品牌A公司成立多年来,注重产品研发和创新,不断提高产品的质量和性能。并通过持续改进和升级设备,提供更好的清洗体验。无论是在清洗效果上还是在使用过程中的便捷性上,品牌A都能够满足消费者的需求。

2. 品牌B

品牌B是一家专业从事汽车空调清洗的国际品牌。该品牌秉持着“健康、环保、高效”的理念,致力于为驾乘者提供更加舒适和健康的驾乘环境。品牌B的清洗液采用独特的配方,能够快速除菌、清除异味,有效净化空调系统内部空气。

品牌B在清洗设备方面也有独特的优势。其设备采用先进的技术,能够深入到空调系统中的每个细节,并且通过高压喷射和吸力功能,清洗效果更加彻底。此外,品牌B的设备操作简单,不仅适用于专业技师,也适合广大车主自行清洗。

3. 品牌C

品牌C是一家具有悠久历史的汽车空调清洗品牌,拥有多年的行业经验和技术实力。该品牌的清洗液采用天然植物提取物制成,无刺激性气味,对人体无害,可以放心使用。同时,品牌C的清洗液还具有良好的杀菌和消毒效果,确保空调系统的卫生与健康。

品牌C的清洗设备便携式,操作简单方便,适合个人和专业技师使用。其独特的设计使得清洗过程更加高效且彻底,能够清除空调系统中的细菌、异味和灰尘,给驾乘者带来清新的空气。

4. 品牌D

品牌D是一家国内顶尖的汽车空调清洗品牌,以其卓越的品质和服务著称。该品牌的清洗液经过专业配方调制,能够迅速清除空调系统中的污垢和异味,杀灭细菌和病毒,有效净化空气。与此同时,品牌D的清洗设备也是行业中的领先者,通过先进的技术,能够深入清洗空调系统的各个角落。

品牌D更注重售后服务,在产品质量的基础上,提供全面的技术支持和咨询服务。无论是产品的使用还是维护保养,品牌D都能够为消费者提供专业的解决方案。

结论

小车空调清洗是确保驾乘者健康和舒适的重要一环。选择合适的品牌进行清洗是关键。通过对几个知名品牌进行比较,我们可以发现每个品牌都有自己的优势和特点,在质量、技术和服务方面各有千秋。因此,在选择品牌时,应根据自身需求和喜好来做出选择。

此外,在进行清洗时还应注意按照使用说明操作,保证清洗的效果和安全。并定期进行空调系统的清洗保养,以确保车内空气的清新与健康。

希望本文对您选择小车空调清洗品牌有所帮助,祝您驾车愉快!

十、毕设用stm32单片机设计小车,该从哪里开始着手?

文章目录

  • 0 前言
  • 1 项目背景
  • 2 设计思路
  • 3 硬件设计
  • 4 软件设计
    • 4.1 核心PID控制
    • 4.2 直立控制程序设计
    • 4.3 速度控制程序设计
    • 4.4 方向控制程序设计
    • 4.5 关键代码
  • 5 最后

0 前言

这两年开始毕业设计和毕业答辩的要求和难度不断提升,传统的毕设题目缺少创新和亮点,往往达不到毕业答辩的要求,这两年不断有学弟学妹告诉学长自己做的项目系统达不到老师的要求。

为了大家能够顺利以及最少的精力通过毕设,学长分享优质毕业设计项目,今天要分享的是

基于stm32的智能平衡小车

学长这里给一个题目综合评分(每项满分5分)

  • 难度系数:3分
  • 工作量:4分
  • 创新点:4分
在这里插入图片描述

项目详细描述地址:

https://www.zhihu.com/people/51-81-23-36/zvideos

1 项目背景

随着机器人研究的进一步深入,在工业生产、安防系统、智能家居、物流网等领域的应用更加广泛,在实际应用中,可能遇到复杂的任务环境。相比多轮的轮式机器人,两轮自平衡机器人体积小,运动灵活,能够在比较狭窄、需要大转角的场合中运动[1]。这种机器人两轮共轴,可以通过运动保持自身平衡,能实现前进、后退、转向、原地静止等基本运动功能,由于其结构特殊,能适应不同的地形环境,研究两轮自平衡机器人,具有重要的意义。

其次,两轮自平衡车还可以作为代步交通工具。相比传统的代步工具如自行车、电动车等,两轮自平衡车体积大幅减小,重力大幅减。运动灵活,绿色环保。

2 设计思路

从控制的角度来看,电机是系统唯一的控制对象。车模运动控制任务可以分解成以下三个基本控制任务:

(1) 直立控制任务:车模的倾角作为控制的输入量,使用PD算法,控制车模稳定在平衡位置。

(2) 速度控制任务:直立车模的速度控制与普通的车模速度控制不同,在直立系统中,速度控制是通过改变车模倾角来完成的。具体实施思路是,对电机转速加入干扰,使车身偏离平衡位置,以此刺激直立控制任务,从而达到控制速度的目的,速度控制使用PI算法。

(3) 方向控制任务:通过控制两个电机的差速来达到转向的目的,方向控制使用PD算法,使用X轴的角速度作为微分项的因子,可以极大改善转向的动态性能,避免振荡。

在这里插入图片描述

3 硬件设计

该小车学长采用一个主控电路板+一个电机驱动电路板的结构,将两者分开设计,一是可以避免电机驱动对主控的影响及电磁干扰,二是出于经济的考虑。

主控电路板主要包括以下部分:微控制器电路、电源管理电路、微控制器接口、按键电路、蜂鸣器电路。其中,电源管理电路分为3.3V电源管理电路和5V电源管理电路,5V管理电路使用LM2940三端线性稳压器,输入7.2V电池电压,输出5V电压。3.3V管理电路使用LM1117三端线性稳压器,输入接LM2940的5V电压,输出3.3V电压。考虑到本系统中器件、传感器较多,因此5V管理电路和3.3V管理电路均使用两个。微控制器接口主要包括:OLED接口、蓝牙接口、MMA7361传感器接口、L3G4200D传感器接口、编码器正交解码接口2个、四通道PWM接口、遥控器解码接口,以及预留IO,方便调试使用。

在这里插入图片描述

原理图

在这里插入图片描述

4 软件设计

在这里插入图片描述

4.1 核心PID控制

在自动控制中,按照偏差(目标值与反馈值之差)的比例§、积分(I)、微分(D)的组合进行控制的方法称为PID控制算法,由于其原理简单、稳定性好、可靠性高、易于调整等优点,在自动控制领域应用最为广泛,已有近70年历史,现有的很多控制方法都是基于PID控制算法发展演变而来。当我们对目标系统和控制对象的模型不够了解,或者不能得到控制系统的参数时,PID控制算法尤为适用。

在这里插入图片描述

1)比例控制部分:成比例地反应控制系统的偏差信号e(t),偏差一旦产生,调节器立即产生控制作用以减小偏差,其控制作用最为明显。

2)积分控制部分:积分控制作用的强弱取决于积分时间常数Ti,Ti越大,积分作用越弱,反之则越强。积分控制主要用于消除静差,提高系统的无差度。

3)微分控制部分:微分控制的计算因子是偏差的变化率,能够抑制偏差的变化,并偏差的值变得太大之前,引入一个早期修正量,达到加快系统响应调节速度的目的。积分控制可以提高系统的动态性能,提高反应速度,克服振荡。

PID控制算法的计算结果是偏差信号的比例、积分、微分三部分的线性叠加,偏差值e(t)即目标值r(t)与反馈值c(t)的差,属于闭环控制系统,因此需要使用传感器构成反馈回路。

4.2 直立控制程序设计

车模平衡控制需要负反馈,就需要能够测量车体的倾角,构成反馈回路。在能够测量倾角的情况下,设定目标平衡角度,使用PID算法进行闭环控制。因为车体只会在一个的方向上运动,只存在一个维度的倾斜,因此只需要测量一个维度的倾角,然后控制轮子转动,抵消车体在该维度上的倾斜,就可以完成平衡控制

在这里插入图片描述

算法流程

在这里插入图片描述

4.3 速度控制程序设计

直立车模的速度控制方法与普通车模的速度控制方法不同,因为普通车模的电机只需要控制转动,而直立车模的电机输出是平衡控制、速度控制、方向控制三部分之间的叠加。

因为直立系统的首要任务是保持直立,当车模倾角发生改变,车模就会在直立控制的作用下向倾斜方向运动。速度控制就是利用了直立系统的这种特性

在这里插入图片描述

void Speed_Calculate() {

SP.goal=(t1-t1_mid)/10;
        if(SP.goal>50) SP.goal=50;
      else if(SP.goal<-30) SP.goal=-30;

    SpeedControlOut_Old=SpeedControlOut;
    SP.error=(SP.goal)-(Speed_L+Speed_R)/2;
    SP.error_sum+=SP.error;
   if(SP.error_sum>200) SP.error_sum=200;//积分限幅
   else if(SP.error_sum<-200) SP.error_sum=-200;
        SpeedControlOut=-(int16_t)((SP.P)*SP.error+SP.I*SP.error_sum);
    if(SpeedControlOut>300) SpeedControlOut=300;//速度环输出限幅
    else if(SpeedControlOut<-300) SpeedControlOut=-300;
}

4.4 方向控制程序设计

直立车模的转向是通过两轮的差速来完成的,转向控制使用PD算法,本系统不具备自主识别路径的功能,因此PD算法的输入参数使用遥控器完成。为了改善转向的动态特性,避免振荡,对PD算法做了修改,微分项的因子不再使用传统的e(t)-e(t-1),而是使用陀螺仪的X轴,因为陀螺仪输出灵敏度更高

在这里插入图片描述

void Direction_Calculate(int16_t bias) { DIR.last_error=DIR.error; DIR.error=bias/6-dmp_yaw; DIR.error_sum+=DIR.error; if(DIR.error_sum>2000) DIR.error_sum=2000; else if(DIR.error_sum<-2000) DIR.error_sum=-2000; DirectionControlOut_Old=DirectionControlOut; DirectionControlOut = DIR.PDIR.error + DIR.IDIR.error_sum + DIR.D*(T_X-TX_OFFSET);

DirectionControlOut_Old=DirectionControlOut; DirectionControlOut=bias*0.15f; if(DirectionControlOut>300) DirectionControlOut=300; else if(DirectionControlOut<-300) DirectionControlOut=-300; }

互补滤波法调试结果

在这里插入图片描述

4.5 关键代码

int main() { uint8_t dirswitchtemp,spswitchtemp; SmartCar_Init(); while(1) { VisualScope_Out(); while(DMA_IsMajorLoopComplete(HW_DMA_CH2));

if(StandUp_Flag==1&&IS_RUNNING==0)
            {
                dirswitchtemp=DirectionControlSwitch;//保存之前的开关
                spswitchtemp =SpeedControlSwitch;
                DirectionControlSwitch=0;
                  SpeedControlSwitch=0;
                    ZL.P*=1.5f;
                    ZL.D*=1.5f;
                    DelayMs(500);
                    Motor_Enable();
                    IS_RUNNING=1;//将小车运行标志置位
                    DelayMs(500);
                    StandUp_Flag=0;
                    DelayMs(1000);
                    ZL.P/=1.5f;
                    ZL.D/=1.5f;
                    SpeedControlSwitch=dirswitchtemp;
                    DirectionControlSwitch=dirswitchtemp;
            }
  }
}

void PIT0_ISR()
{
    static uint16_t FindZeroIndex=0;
        systime_speed++;//速度控制节拍+1
        systime_direction++;//方向控制节拍+1
        ADC_GetDataAndFilter();
        Angle_Calculate();
        //Yaw_Calculate();
        if(systime_direction==5)
        {
                //HMC_angle=Get_Angle();
                systime_direction=0;
                Dr_Smooth=0.2;
                Direction_Calculate(t2-t2_mid);
        }
     if(systime_speed==20)
    {
        systime_speed=0 ;
        GPIO_ToggleBit(HW_GPIOE,26);//闪烁
          Sp_Smooth=0.05;//重置平滑系数
         Get_Speed();
        Speed_Calculate();
    }
    if(FindZeroFlag)
    {
        FindZeroIndex++;
          if(FindZeroIndex>=400)//说白了按下键之后两秒才开始记录数据
          {
              GYROY_SUM+=T_Y;
              GYROX_SUM+=T_X;
                  if(FindZeroIndex>=499)
                  {
                      FindZeroFlag=0;//次数够了,清标志位
                      FindZeroIndex=0;
                      TY_OFFSET=GYROY_SUM*0.01f;
                      TX_OFFSET=GYROX_SUM*0.01f;
                      GYROX_SUM=0;
                      GYROY_SUM=0;
                  }
          }
    }
    Motor_Output();
}

void SmartCar_Init() { DelayInit(); /**Debug_初始化*/ /*主要是DMP用到了printf**/ UART_QuickInit(UART3_RX_PE05_TX_PE04,115200); UART_SelectDebugInstance(HW_UART3); //*LED初始化,用作系统运行指示**// GPIO_QuickInit(HW_GPIOE,26,kGPIO_Mode_OPP); GPIO_SetBit(HW_GPIOE,26); /*OLED初始化**/ OLED_Init(); //**模拟加速度计陀螺仪初始化**/

GPIO_QuickInit(MMA7361_EN,kGPIO_Mode_OPP);
    GPIO_SetBit(MMA7361_EN);                                                //使能MMA7361
    ADC_QuickInit(ADC_ACCEL_Z,kADC_SingleDiff10or11);//单端12位输入
    //**************IIC及L3G4200D\HMC5883初始化******************//
    I2C_QuickInit(I2C0_SCL_PD08_SDA_PD09,I2C_SPEED);
   L3G4200D_Init();

CT_IIC_Init(); while(mpu_dmp_init()) { OLED_P8x16Str(0,0,"DMP Error"); OLED_P8x16Num(0,0,mpu_dmp_init()); DelayMs(200); } OLED_P8x16Str(0,0,"DMP OK!"); /*DMP数据输出中断/ GPIO_QuickInit(HW_GPIOE,4,kGPIO_Mode_IFT); //DMP输出输出中断 GPIO_CallbackInstall(HW_GPIOE,GPIOE_ISR); GPIO_ITDMAConfig(HW_GPIOE,4,kGPIO_IT_FallingEdge,true); /**PWM初始化*****/ FTM_PWM_QuickInit(FTM0_CH0_PC01,kPWM_EdgeAligned,10000); FTM_PWM_QuickInit(FTM0_CH1_PC02,kPWM_EdgeAligned,10000); FTM_PWM_QuickInit(FTM0_CH2_PC03,kPWM_EdgeAligned,10000); FTM_PWM_QuickInit(FTM0_CH3_PC04,kPWM_EdgeAligned,10000);

FTM_PWM_ChangeDuty(FTM_PWM_LEFT,0);
    FTM_PWM_ChangeDuty(FTM_PWM_LEFT_,0);
    FTM_PWM_ChangeDuty(FTM_PWM_RIGHT,0);
    FTM_PWM_ChangeDuty(FTM_PWM_RIGHT_,0);
  /**************FTM正交解码初始化**************/
  /***********初始化位 脉冲-方向型编码器**********/
    FTM_QD_QuickInit(FTM1_QD_PHA_PB00_PHB_PB01,kFTM_QD_NormalPolarity,kQD_CountDirectionEncoding);
    FTM_QD_QuickInit(FTM2_QD_PHA_PB18_PHB_PB19,kFTM_QD_NormalPolarity,kQD_CountDirectionEncoding);

    GPIO_QuickInit(DIR_LEFT,kGPIO_Mode_IFT);//左边编码器方向角设置为悬空输入
    GPIO_QuickInit(DIR_RIGHT,kGPIO_Mode_IFT);//右边编码器方向角设置为悬空输入
  //**********************串口初始化********/
     UART_QuickInit(UART4_RX_PE25_TX_PE24,115200);
    UART_ITDMAConfig(HW_UART4,kUART_DMA_Tx,true);
    UART_DMASendConfig(HW_UART4,HW_DMA_CH2);
  //**********************按键中端配置************/
    GPIO_QuickInit(KEY_GPIO,KEY_OK,kGPIO_Mode_IPU);
    GPIO_QuickInit(KEY_GPIO,KEY_UP,kGPIO_Mode_IPU);
    GPIO_QuickInit(KEY_GPIO,KEY_DOWN,kGPIO_Mode_IPU);
    GPIO_QuickInit(KEY_GPIO,KEY_LEFT,kGPIO_Mode_IPU);
    GPIO_QuickInit(KEY_GPIO,KEY_RIGHT,kGPIO_Mode_IPU);

    GPIO_CallbackInstall(KEY_GPIO,GPIOA_ISR);//按键中断回调函数
    GPIO_ITDMAConfig(KEY_GPIO,KEY_OK,kGPIO_IT_FallingEdge,true);
    GPIO_ITDMAConfig(KEY_GPIO,KEY_UP,kGPIO_IT_FallingEdge,true);
    GPIO_ITDMAConfig(KEY_GPIO,KEY_DOWN,kGPIO_IT_FallingEdge,true);
    GPIO_ITDMAConfig(KEY_GPIO,KEY_LEFT,kGPIO_IT_RisingEdge,true);
    GPIO_ITDMAConfig(KEY_GPIO,KEY_RIGHT,kGPIO_IT_FallingEdge,true);
            //*************解码通道配置****************/  
        GPIO_QuickInit(HW_GPIOD,12,kGPIO_Mode_IFT);             
        GPIO_QuickInit(HW_GPIOD,13,kGPIO_Mode_IFT);
        GPIO_QuickInit(HW_GPIOD,14,kGPIO_Mode_IFT);

    GPIO_CallbackInstall(HW_GPIOD,GPIOD_ISR);
    GPIO_ITDMAConfig(HW_GPIOD,12,kGPIO_IT_RisingFallingEdge,true);
      GPIO_ITDMAConfig(HW_GPIOD,13,kGPIO_IT_RisingFallingEdge,true);
        GPIO_ITDMAConfig(HW_GPIOD,14,kGPIO_IT_RisingFallingEdge,true);
    //*****************PIT定时中断初始化*****************/
    PIT_QuickInit(HW_PIT_CH0,3000);
    PIT_ITDMAConfig(HW_PIT_CH0,kPIT_IT_TOF,true);
    PIT_CallbackInstall(HW_PIT_CH0,PIT0_ISR);
    /*******************NVIC配置****************/
    NVIC_SetPriorityGrouping(NVIC_PriorityGroup_2);  //中断优先级分成2组
        NVIC_SetPriority(PORTD_IRQn, NVIC_EncodePriority(NVIC_PriorityGroup_2, 0, 0));//遥控器
    NVIC_SetPriority(PIT0_IRQn, NVIC_EncodePriority(NVIC_PriorityGroup_2, 1, 0));//周期性中断优先级
        NVIC_SetPriority(PORTE_IRQn, NVIC_EncodePriority(NVIC_PriorityGroup_2, 2, 0));//DMP
    NVIC_SetPriority(PORTA_IRQn, NVIC_EncodePriority(NVIC_PriorityGroup_2, 3, 0));//按键中断
        OLED_P8x16Str(0,2,"Hello World!");
}

项目详细描述地址:

https://www.zhihu.com/people/51-81-23-36/zvideos
顶一下
(0)
0%
踩一下
(0)
0%
相关评论
我要评论
点击我更换图片