发现并解决的问题:
1 IWDG与WWDG的区别
①IWDG是12位递减计数器,递减到0产生中断复位,要设定计数器初值;WWDG是7位递减计数器,递减到64(0x40)产生中断复位,要设定计数器初值和窗口值。
②IWDG须在计数器递减到0之前喂狗;WWDG须在计数器递减到窗口值与64之间时喂狗。
③IWDG无中断;WWDG有中断,通常在中断服务函数中(HAL库对应HAL_WWDG_EarlyWakeupCallback)保存重要数据并喂狗,中断服务函数要在计数器递减到63(0x3F)之前完成,否则会产生复位。
④IWDG使用内部低速时钟(约32kHz),精度低;WWDG使用系统时钟APB1,精度高。
2 RTC设定
RTC由后备区域管理,有独立的电源和时钟,只需在第一次上电时配置时间和日期,配置后在BKR寄存器写入特定值(用户自定义),标志配置完成。之后每次上电再读取该寄存器,如果与特定值相匹配,则无须再进行初始化。
每次系统复位后,为防止对后备区域进行意外写操作,会自动禁止访问后备寄存器和RTC,如果要重新配置时间和日期,先要取消备份区域写保护。RTC写保护寄存器为RTC_WPR,低8位有效,依次写入0xCA、0x53可解锁。在HAL库中,该步骤被封装在库函数HAL_RTC_Init中,定义为宏__HAL_RTC_WRITEPROTECTION_DISABLE。
目前进度:
完成所有外设调试,开会讨论须重做while(1)大循环,细化MPPT算法内容与判定条件。
思路:
明天在购入太阳能板和蓄电池的基础上进行MPPT算法调试,确定MPPT算法各判定条件。
网友评论