PCB抄板STM32H7系列单片机写的移动电源程序
- /*
- ---------------------
- IC解密 电源--|VDD VSS|--地
- PinCharge--|PA5/OSC1/KIN5 PA0/AIN0|--NC
- PinChargeFull--|PA4/OSC2/KIN4 PA1/AIN1|--PinCurrent
- PinHalt--|PA3/MRST/KIN3 PA2/AIN2|--PinBoostEN
- PinLed1--|PB3/AIN7 PB0/AIN3|--PinSelMode
- PinLed2--|PB2/AIN6 PB1/AIN4|--NC
- PinLed3--|PA7/AIN5/KIN7 PA6|--PinKey
- ---------------------
- */
- /*****************************************************************************
- ;* Title :
- ;*
- ;*
- ;*
- ;* Device : HR7P155-SOP14
- ;* OSC : 8Mhz( Internal 8Mhz )
- ;*
- ;* Compiler: IDE
- ;* Hardware:
- ;* Version : A00
- ;***************************************************************************/
- /*********************************************
- ;* Include headfiles
- ;********************************************/
- #include "Init.h"
- /*********************************************
- ;* Private variables
- ;********************************************/
- /**********************************************
- ;*
- ;* Function Name: main
- ;* Inputs: None
- ;* Returns: None
- ;* Description: the main process
- ;*
- ;**********************************************/
- void main(void)
- {
- InitialMCU();
-
- while(1)
- {
-
- CLRWDT();
- RCEN = 1;
-
- if(FlagSysClk1ms)
- {
- FlagSysClk1ms = 0;
-
- KeyScan(); //按键扫描子程序
-
- ADCurrentSample(); //电流采样处理子程序
-
- }
-
- if(FlagSysClk20ms)
- {
- FlagSysClk20ms = 0;
-
- GetSysStatus(); //状态处理子程序
-
- LowLoadCheck(); //轻负载、过流保护处理子程序
-
- ControlCharge(); //充电控制子程序
-
- }
-
- if(FlagSysClk500ms)
- {
- FlagSysClk500ms = 0;
-
- //for debug
- //PowerBattaryQ = 2600; //blink
- //PowerBattaryQ = 2700; //level1
- //PowerBattaryQ = 2800; //level2
- //PowerBattaryQ = 2850; //level3
- //PowerBattaryQ = 3000; //level4
-
- HandFlagProcess(); //功能模式处理子程序
-
- DealDispData(); //显示数据处理子程序 必须放在电量级别判断之后
-
- HaltProcess(); //休眠处理子程序
-
- AdjustToBalance(); //电池电量级别平衡处理子程序
-
-
-
- }
-
-
- }
-
-
- }
- /**********************************************
- ;*
- ;* Function Name: interrupt service routine
- ;* Inputs: None
- ;* Returns: None
- ;* Description: the isr process
- ;*
- ;**********************************************/
- void isr(void) interrupt
- {
- if (T8P2IE & T8P2IF)
- {
- T8P2IF = 0;
- FlagSysClk1ms = 1;
-
- CntSysClk20ms++;
-
- //每20ms执行一次
- if(CntSysClk20ms >= 20)
- {
- FlagSysClk20ms = 1;
- CntSysClk20ms = 0;
- CntSysClk500ms++;
- if(CntSysClk500ms >= 25)
- {
- FlagSysClk500ms = 1;
- CntSysClk500ms = 0;
-
- }
-
-
- }
-
- }

芯片解密