开的定时器打印,不重启了?

This commit is contained in:
stark1898y 2025-06-03 13:00:57 +08:00
parent 0784704e1a
commit 8ed4f9abb2
12 changed files with 163 additions and 41 deletions

View File

@ -53,7 +53,7 @@ void BSP_NoNeeedReplyCMd(void)
// How often to perform periodic event // How often to perform periodic event
// TODO:这里长点功耗低 // TODO:这里长点功耗低
#define SBP_PERIODIC_EVT_PERIOD (1600 * 60 * 3) // (160 = 100ms) #define SBP_PERIODIC_EVT_PERIOD (1600 * 60 * 1) // (160 = 100ms)
// How often to perform read rssi event // How often to perform read rssi event
#define SBP_READ_RSSI_EVT_PERIOD (1600 * 3) // (160 = 100ms) #define SBP_READ_RSSI_EVT_PERIOD (1600 * 3) // (160 = 100ms)

View File

@ -265,6 +265,7 @@ int main(void)
GAPRole_PeripheralInit(); GAPRole_PeripheralInit();
Peripheral_Init(); Peripheral_Init();
for (uint8_t i = 0; i < 10; i++) for (uint8_t i = 0; i < 10; i++)
{ {
if (TMOS_GetSystemClock() > 0) if (TMOS_GetSystemClock() > 0)
@ -325,6 +326,8 @@ int main(void)
IWDG_Init(IWDG_TIMEOUT_MS); IWDG_Init(IWDG_TIMEOUT_MS);
// BSP_TMR0_Init();
// logDebug("BSP_Get_Tick1 %d", BSP_Get_Tick()); // logDebug("BSP_Get_Tick1 %d", BSP_Get_Tick());
// DelayMs(1000); // DelayMs(1000);
// logDebug("BSP_Get_Tick2 %d", BSP_Get_Tick()); // logDebug("BSP_Get_Tick2 %d", BSP_Get_Tick());

View File

@ -21,10 +21,12 @@
#define RB_WR_PROTECT 0x40000000 // RO, write protect #define RB_WR_PROTECT 0x40000000 // RO, write protect
#define RB_IWDG_EN 0x80000000 // RO, watch-dog enable #define RB_IWDG_EN 0x80000000 // RO, watch-dog enable
#define IWDG_TIMEOUT_MS (10000) #define IWDG_TIMEOUT_MS (5000)
#define IWDG_FEED_MS (3000) #define IWDG_FEED_MS (2500)
#define IWIG_FEED_EVENT (0x01 << 0) #define IWIG_FEED_EVENT (0x01 << 0)
#define TMR0_START_EVENT (0x01 << 1)
#define TMR0_END_EVENT (0x01 << 2)
void IWDG_Init(uint16_t ms); void IWDG_Init(uint16_t ms);

View File

@ -17,7 +17,7 @@ uint32_t CH5XX_GetTimeStamp(uint16_t *tick);
uint32_t BSP_Get_Tick(void); uint32_t BSP_Get_Tick(void);
void BSP_TMR0_Init();

View File

@ -29,6 +29,11 @@ uint16_t min_number = 0;
uint16_t max_number = 0; uint16_t max_number = 0;
double voltage = 0; double voltage = 0;
// 读adc的 一般要看有没有中断调用,如果有中断调用, 就存在风险,否则就没啥风险
// 通用的做是, 可以先复现, 看下复现时候的电流, 根据电流来判断大概运行的位置,
// 比如卡死时候电流为mA级别的, 可能就就是代码卡到某个函数里面了
// , 这时候可以加入一个高优先级的定时器, 定时送PC指针,当卡死时候, 看下PC指针, 就能看到卡到什么地方了,
// https://www.cnblogs.com/iot-fan/p/14304854.html // https://www.cnblogs.com/iot-fan/p/14304854.html
__HIGH_CODE __HIGH_CODE
uint8_t BSP_ReadVbat(void) uint8_t BSP_ReadVbat(void)

View File

@ -409,10 +409,10 @@ int BSP_ReadTempHumi(float *humi, float *temp)
int ret; int ret;
GXHTC3C_Wakeup(); GXHTC3C_Wakeup();
DelayMs(1); DelayMs(2);
GXHTC3C_GetStart(); GXHTC3C_GetStart();
DelayMs(3); DelayMs(4);
float _humi, _temp; float _humi, _temp;
ret = GXHTC3C_GetTempHumi(&_humi, &_temp); ret = GXHTC3C_GetTempHumi(&_humi, &_temp);
if (ret == 0) if (ret == 0)

View File

@ -2,7 +2,7 @@
* @Author : stark1898y 1658608470@qq.com * @Author : stark1898y 1658608470@qq.com
* @Date : 2024-12-15 16:13:41 * @Date : 2024-12-15 16:13:41
* @LastEditors : stark1898y 1658608470@qq.com * @LastEditors : stark1898y 1658608470@qq.com
* @LastEditTime : 2025-05-21 13:11:02 * @LastEditTime : 2025-06-03 12:08:25
* @FilePath : \BLE_TYQ_CH584M\BSP\src\bsp_iwdg.c * @FilePath : \BLE_TYQ_CH584M\BSP\src\bsp_iwdg.c
* @Description : * @Description :
* *
@ -14,6 +14,8 @@
#include "log.h" #include "log.h"
#include "bsp_tim.h" #include "bsp_tim.h"
#include "SLEEP.h"
// https://www.cnblogs.com/debugdabiaoge/p/17580033.html // https://www.cnblogs.com/debugdabiaoge/p/17580033.html
// https://www.cnblogs.com/risc5-ble/p/17853714.html // https://www.cnblogs.com/risc5-ble/p/17853714.html
@ -39,9 +41,27 @@ uint16_t IWDG_ProcessEvent(uint8_t task_id, uint16_t events)
// uint8_t* a = tmos_msg_allocate(1); // uint8_t* a = tmos_msg_allocate(1);
uint32_t tmos_memory_getlen(void); uint32_t tmos_memory_getlen(void);
logDebug("tmos_memory_getlen = %d" , tmos_memory_getlen()); logDebug("tmos_memory_getlen = %d" , tmos_memory_getlen());
BSP_TMR0_Init();
BSP_BlockSleep();
// tmos_start_task(task_id, IWIG_FEED_EVENT, MS1_TO_SYSTEM_TIME(IWDG_FEED_MS)); // tmos_start_task(task_id, IWIG_FEED_EVENT, MS1_TO_SYSTEM_TIME(IWDG_FEED_MS));
return (events ^ IWIG_FEED_EVENT); return (events ^ IWIG_FEED_EVENT);
} }
if (events & TMR0_START_EVENT)
{
BSP_TMR0_Init();
BSP_BlockSleep();
tmos_start_task(task_id, TMR0_END_EVENT, MS1_TO_SYSTEM_TIME(20));
return (events ^ TMR0_START_EVENT);
}
if (events & TMR0_END_EVENT)
{
BSP_RequestSleep();
tmos_start_task(IWDGTaskId, TMR0_START_EVENT, MS1_TO_SYSTEM_TIME(1000));
return (events ^ TMR0_END_EVENT);
}
return 0; return 0;
} }
@ -82,6 +102,7 @@ void IWDG_Init(uint16_t ms)
IWDGTaskId = TMOS_ProcessEventRegister(IWDG_ProcessEvent); IWDGTaskId = TMOS_ProcessEventRegister(IWDG_ProcessEvent);
// tmos_set_event(IWDGTaskId, IWIG_FEED_EVENT); // tmos_set_event(IWDGTaskId, IWIG_FEED_EVENT);
tmos_start_reload_task(IWDGTaskId, IWIG_FEED_EVENT, MS1_TO_SYSTEM_TIME(IWDG_FEED_MS)); tmos_start_reload_task(IWDGTaskId, IWIG_FEED_EVENT, MS1_TO_SYSTEM_TIME(IWDG_FEED_MS));
// tmos_start_task(IWDGTaskId, TMR0_START_EVENT, MS1_TO_SYSTEM_TIME(1000));
} }
// #define RB_RESET_FLAG 0x07 // RO: recent reset flag // #define RB_RESET_FLAG 0x07 // RO: recent reset flag

View File

@ -2,7 +2,7 @@
* @Author : stark1898y 1658608470@qq.com * @Author : stark1898y 1658608470@qq.com
* @Date : 2024-12-15 15:01:15 * @Date : 2024-12-15 15:01:15
* @LastEditors : stark1898y 1658608470@qq.com * @LastEditors : stark1898y 1658608470@qq.com
* @LastEditTime : 2025-05-16 18:21:05 * @LastEditTime : 2025-06-03 12:45:41
* @FilePath : \BLE_TYQ_CH584M\BSP\src\bsp_tim.c * @FilePath : \BLE_TYQ_CH584M\BSP\src\bsp_tim.c
* @Description : * @Description :
* *
@ -10,6 +10,20 @@
*/ */
#include "bsp_tim.h" #include "bsp_tim.h"
#include "bsp_uart.h"
#include "log.h"
#include "SLEEP.h"
// https://www.cnblogs.com/debugdabiaoge/p/17580033.html
// https://www.cnblogs.com/risc5-ble/p/17853714.html
#undef LOG_ENABLE
#define LOG_ENABLE 1
#undef LOG_TAG
#define LOG_TAG "tim"
// tick_1ms_cnt在SysTick_Handler()中1ms +1 // tick_1ms_cnt在SysTick_Handler()中1ms +1
volatile uint32_t tick_1ms_cnt = 0; volatile uint32_t tick_1ms_cnt = 0;
@ -86,6 +100,99 @@ uint32_t BSP_Get_Tick(void)
// logDebug("seconds = %d.%d", seconds, tick_1sec * 1000 / 32768); // logDebug("seconds = %d.%d", seconds, tick_1sec * 1000 / 32768);
} }
/* 定时器0设定100ms定时器进行IO口闪灯 PB15-LED */
void BSP_TMR0_Init()
{
TMR0_TimerInit(FREQ_SYS / 1000 * 20); // 设置定时时间
// TMR0_TimerInit(FREQ_SYS); // 设置定时时间
TMR0_ITCfg(ENABLE, TMR0_3_IT_CYC_END); // 开启中断
PFIC_EnableIRQ(TMR0_IRQn);
}
/*********************************************************************
* @fn TMR0_IRQHandler
*
* @brief TMR0中断函数
*
* @return none
*/
__INTERRUPT
__HIGH_CODE
void TMR0_IRQHandler(void) // TMR0 定时中断
{
if(TMR0_GetITFlag(TMR0_3_IT_CYC_END))
{
TMR0_ClearITFlag(TMR0_3_IT_CYC_END); // 清除中断标志
BSP_RequestSleep();
PFIC_DisableIRQ(TMR0_IRQn);
#if 0
uint32_t v_mepc, v_mcause, v_mtval;
logDebug("hardfault\n");
v_mepc = __get_MEPC();
v_mcause = __get_MCAUSE();
v_mtval = __get_MTVAL();
logDebug("mepc:%08x\n", v_mepc);
logDebug("mcause:%08x\n", v_mcause);
logDebug("mtval:%08x\n", v_mtval);
FLASH_ROM_SW_RESET();
sys_safe_access_enable();
R16_INT32K_TUNE = 0xFFFF;
sys_safe_access_disable();
sys_safe_access_enable();
R8_RST_WDOG_CTRL |= RB_SOFTWARE_RESET;
sys_safe_access_disable();
#endif
// struct __MEMORY_CTL
// {
// struct __MEMORY_CTL *pNext;
// uint16_t len;
// uint16_t used;
// };
// typedef struct __MEMORY_CTL MemoryCtl;
// extern MemoryCtl *MemCtlStart;
// extern MemoryCtl *MemCtlEnd;
// MemoryCtl *MemHead;
// MemHead = MemCtlStart;
// while (MemHead != MemCtlEnd)
// {
// logDebug("|%8x,%8x,%8d.....\n", MemHead->used, (uint32_t)MemHead,
// (uint32_t)(MemHead->pNext) - (uint32_t)MemHead - sizeof(struct __MEMORY_CTL));
// MemHead = MemHead->pNext;
// }
// logDebug("\n");
uint32_t v_mepc, v_mcause, v_mtval;
v_mepc = __get_MEPC();
v_mcause = __get_MCAUSE();
v_mtval = __get_MTVAL();
logDebug("00000000000000000");
logDebug("mepc:%08x", v_mepc);
logDebug("mcause:%08x", v_mcause);
logDebug("mtval:%08x", v_mtval);
logDebug("1111111111111111");
#if 0
FLASH_ROM_SW_RESET();
sys_safe_access_enable();
R16_INT32K_TUNE = 0xFFFF;
sys_safe_access_disable();
sys_safe_access_enable();
R8_RST_WDOG_CTRL |= RB_SOFTWARE_RESET;
sys_safe_access_disable();
#endif
// while (1);
}
}
// SysTick中断函数 // SysTick中断函数
__INTERRUPT __INTERRUPT
__HIGH_CODE __HIGH_CODE

View File

@ -2,7 +2,7 @@
* @Author : stark1898y 1658608470@qq.com * @Author : stark1898y 1658608470@qq.com
* @Date : 2024-12-15 15:01:15 * @Date : 2024-12-15 15:01:15
* @LastEditors : stark1898y 1658608470@qq.com * @LastEditors : stark1898y 1658608470@qq.com
* @LastEditTime : 2025-05-30 16:53:07 * @LastEditTime : 2025-06-03 10:43:05
* @FilePath : \BLE_TYQ_CH584M\BSP\src\bsp_valve.c * @FilePath : \BLE_TYQ_CH584M\BSP\src\bsp_valve.c
* @Description : * @Description :
* *
@ -474,6 +474,7 @@ static uint16_t VAVLE_Task_ProcessEvent(uint8_t task_id, uint16_t events)
boost_en_flag = 0; boost_en_flag = 0;
return (events ^ VAVLE_CLOSE_END_EVT); return (events ^ VAVLE_CLOSE_END_EVT);
} }
#if 0
// 开始测量电磁铁电感 // 开始测量电磁铁电感
if (events & VAVLE_DECT_SWITCH_START_EVT) if (events & VAVLE_DECT_SWITCH_START_EVT)
{ {
@ -507,7 +508,7 @@ static uint16_t VAVLE_Task_ProcessEvent(uint8_t task_id, uint16_t events)
return (events ^ VAVLE_DECT_SWITCH_CALIB_EVT); return (events ^ VAVLE_DECT_SWITCH_CALIB_EVT);
} }
#endif
if (events & VAVLE_LOW_VBAT_ALARM_EVT) if (events & VAVLE_LOW_VBAT_ALARM_EVT)
{ {
logDebug("VAVLE_LOW_VBAT_ALARM_EVT"); logDebug("VAVLE_LOW_VBAT_ALARM_EVT");

View File

@ -142,32 +142,17 @@ uint32_t CH58x_LowPower(uint32_t time)
__nop(); __nop();
} }
#endif #endif
BSP_KEY_EnterLowpower();
// LOW POWER-sleep模式 // LOW POWER-sleep模式
if (!RTCTigFlag) if (!RTCTigFlag)
{ {
if (block_boost_flag == false)
{
BOOST_EN;
}
else
{
BOOST_OFF_DEINIT;
}
if (true == block_sleep_flag)
{
// logDebug("block_sleep");
return 0;
}
BSP_KEY_EnterLowpower();
LowPower_Sleep(RB_PWR_RAM32K | RB_PWR_RAM96K | RB_PWR_EXTEND); LowPower_Sleep(RB_PWR_RAM32K | RB_PWR_RAM96K | RB_PWR_EXTEND);
R8_RTC_FLAG_CTRL = (RB_RTC_TMR_CLR | RB_RTC_TRIG_CLR); R8_RTC_FLAG_CTRL = (RB_RTC_TMR_CLR | RB_RTC_TRIG_CLR);
RTC_SetTignTime(time); RTC_SetTignTime(time);
sys_safe_access_enable(); sys_safe_access_enable();
R8_HFCK_PWR_CTRL |= RB_CLK_XT32M_KEEP; R8_HFCK_PWR_CTRL |= RB_CLK_XT32M_KEEP;
sys_safe_access_disable(); sys_safe_access_disable();
if(!RTCTigFlag) if(!RTCTigFlag)
{ {
LowPower_Halt(); LowPower_Halt();
@ -175,9 +160,6 @@ uint32_t CH58x_LowPower(uint32_t time)
R8_RTC_FLAG_CTRL = (RB_RTC_TMR_CLR | RB_RTC_TRIG_CLR); R8_RTC_FLAG_CTRL = (RB_RTC_TMR_CLR | RB_RTC_TRIG_CLR);
HSECFG_Current(HSE_RCur_100); // 降为额定电流(低功耗函数中提升了HSE偏置电流) HSECFG_Current(HSE_RCur_100); // 降为额定电流(低功耗函数中提升了HSE偏置电流)
// i = RTC_GetCycle32k();
// while (i == RTC_GetCycle32k());
return 0; return 0;
} }
#endif #endif

View File

@ -129,7 +129,8 @@ void SetSysClock(SYS_CLKTypeDef sc)
* *
* @return none * @return none
*/ */
__attribute__((section(".highcode_init"))) void highcode_init(void) __attribute__((section(".highcode_init")))
void highcode_init(void)
{ {
R32_SAFE_MODE_CTRL |= RB_XROM_312M_SEL; R32_SAFE_MODE_CTRL |= RB_XROM_312M_SEL;
R8_SAFE_MODE_CTRL &= ~RB_SAFE_AUTO_EN; R8_SAFE_MODE_CTRL &= ~RB_SAFE_AUTO_EN;