移动电源项目完成总结

2019-07-14 00:34发布

一:遇到的问题          1:上拉下拉问题: 做一个东西之前一定要确保硬件稳定,比如升压IC输出的脉冲是不稳定的,高电平太高,超过输入电压*0.7,而且低电压也不是0V,所以需要我做下拉处理。          2:获取脉冲的方法:                    适用于有周期的脉冲,读取脉冲的个数。                 if(GPIO_Read_Status(GPIOA0,6) == 1)               {                             text1++;                             FLAGA=1;               }               else if(GPIO_Read_Status(GPIOA0,6) == 0)               {                             text2++;                             FLAGB=1;               }                    算法思想,在定时器里面获取脉冲的状态,用数字进行累加,高电平的数值加到多少之后,一旦到了低电平就进行对高电平的累加,一个周期结束统计高电平的脉冲。                   if(FLAGA==1)                             {                             if(text1>=280)                             {                                           LEDNUM=5;                                                     text1=0;                                           count=0;                             }                             else if(text2>=135)                             {                                           LEDNUM=count;                                           count=0;                             }                             else if(text2>=11)                             {}                             text2 = 0;                             FLAGA = 0;               }                     else if(FLAGB==1)               {                             if(text2>=280)                                    {                                           LEDNUM=6;                                           count=0;                                           text2=0;                             }                             else if(text1>=3)                             {                                           count++;                             }                             if((LEDNUM_COUNT2_num>=160))                             {                             text1 = 0;                             FLAGB = 0;               }              3:ADC开启之后要进行低功耗,需要关闭模拟功能或者数字功能。                             ADC->CR |= ADC12_ADCDIS;//关闭模拟功能,进入低功耗          4:低功耗做的好,首先要保证不开看门狗,使用的IO口进入睡眠模式之前一定要处理成高组态模式。ASM32F003高组态不是设置为输入,而是默认状态,设置为0是高组态。          设置为高组态后,在唤醒时一定要把状态设置回来,重新配置为原来的状态。          5:做东西前一定要模块化,面向对象而不是面向结构,东西尽量模块化,可以留有接口。          6:LED    灯的亮灭:   if(IO_state == 1)               {                             f_500ms++;                             if(f_500ms >4)                             {                                           f_500ms = 0;                                           if(testTm == 1)                                                         testTm = 0;                                           else                                                         testTm = 1;                                           if(Led_blink == 1)                                                         GPIO_Set_Value(GPIOA0,3,testTm);                                           else if(Led_blink == 2)                                                         GPIO_Set_Value(GPIOC0,3,testTm);                                           else if(Led_blink == 3)                                                         GPIO_Set_Value(GPIOC0,2,testTm);                             }               }               else                             f_500ms = 0; 7:不要绝对相信调试模式,因为调试模式手动点的比较慢,可能会出现错误,要借助于现象或者串口来调试。 8:如果需要低功耗LED灯的驱动一定要用单片机来供电,这样低功耗模式下,IO口输出低电平即可,功耗会降低很多。 9:如果用ADC采集时电压过高,可以做分压处理,分压的电阻一定要尽量大,可以降低功耗。 10:下来电阻一定要大,1M的电阻。 11:发光二极管无论什么颜 {MOD}正负极都是固定的。 1、直插的发光二极管:脚长的是正极,短的是负极。也可以仔细观察管子内部的电极,较小的是正极,大的类似于碗状的是负极。 2、贴片二极管:俯视,一边带彩 {MOD}线的是负极,另一边是正极。