IWDG ok
This commit is contained in:
parent
39630d3171
commit
5ef5c8842a
|
@ -2,7 +2,7 @@
|
|||
* @Author : stark1898y 1658608470@qq.com
|
||||
* @Date : 2024-12-15 16:13:37
|
||||
* @LastEditors : stark1898y 1658608470@qq.com
|
||||
* @LastEditTime : 2025-05-16 11:17:22
|
||||
* @LastEditTime : 2025-05-16 14:17:34
|
||||
* @FilePath : \BLE_TYQ_CH584M\BSP\inc\bsp_iwdg.h
|
||||
* @Description :
|
||||
*
|
||||
|
@ -31,8 +31,8 @@
|
|||
#define RB_WR_PROTECT 0x40000000 // RO, write protect
|
||||
#define RB_IWDG_EN 0x80000000 // RO, watch-dog enable
|
||||
|
||||
#define IWDG_TIMEOUT_MS (7000U)
|
||||
#define IWDG_FEED_MS (3000U)
|
||||
#define IWDG_TIMEOUT_MS (6000)
|
||||
#define IWDG_FEED_MS (5000)
|
||||
|
||||
#define IWIG_FEED_EVENT (0x01 << 0)
|
||||
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
* @Author : stark1898y 1658608470@qq.com
|
||||
* @Date : 2024-12-15 16:13:41
|
||||
* @LastEditors : stark1898y 1658608470@qq.com
|
||||
* @LastEditTime : 2025-05-16 12:29:30
|
||||
* @LastEditTime : 2025-05-16 14:23:06
|
||||
* @FilePath : \BLE_TYQ_CH584M\BSP\src\bsp_iwdg.c
|
||||
* @Description :
|
||||
*
|
||||
|
@ -30,6 +30,8 @@ uint16_t IWDG_ProcessEvent(uint8_t task_id, uint16_t events)
|
|||
{
|
||||
FEED_IWDG();
|
||||
logDebug("IWDG feed");
|
||||
// 获取tmos系统堆的剩余内存大小
|
||||
// uint8_t* a = tmos_msg_allocate(1);
|
||||
logDebug("tmos_memory_getlen = %d" , tmos_memory_getlen());
|
||||
tmos_start_task(task_id, IWIG_FEED_EVENT, MS1_TO_SYSTEM_TIME(IWDG_FEED_MS));
|
||||
return (events ^ IWIG_FEED_EVENT);
|
||||
|
@ -55,17 +57,22 @@ void IWDG_Init(uint16_t ms)
|
|||
// 解除IWDG保护
|
||||
R32_IWDG_KR = 0x5555;
|
||||
|
||||
R32_IWDG_CFG = (RB_PR & (div << 12)) | (RB_STOP_EN) | (reload & RB_RLR);
|
||||
// R32_IWDG_CFG |= (7 << 12); // 32K分频512,时钟62.5Hz
|
||||
// R32_IWDG_CFG &= 0xFFFFF000;
|
||||
// // R32_IWDG_CFG |= 0x7D * 3; // 看门狗时间约6 s(0x10/(32K/512))
|
||||
// R32_IWDG_CFG |= reload;
|
||||
// R32_IWDG_CFG = (RB_PR & (div << 12)) | (RB_STOP_EN) | (reload & RB_RLR);
|
||||
R32_IWDG_CFG |= (7 << 12); // 32K分频512,时钟62.5Hz
|
||||
R32_IWDG_CFG &= 0xFFFFF000;
|
||||
// R32_IWDG_CFG |= 0x7D * 3; // 看门狗时间约6 s(0x10/(32K/512))
|
||||
R32_IWDG_CFG |= reload;
|
||||
|
||||
// 开启IWDG保护
|
||||
R32_IWDG_KR = 0xCCCC;
|
||||
|
||||
// uint32_t d = R32_IWDG_CFG;
|
||||
// logHexDumpAll(d, 4);
|
||||
logDebug("IWDG = %d, %.1f ms", reload, (reload * 1000) / 62.5);
|
||||
|
||||
// sys_safe_access_enable();
|
||||
// R8_SAFE_LRST_CTRL |= RB_IWDG_RST_EN;
|
||||
// sys_safe_access_disable();
|
||||
|
||||
IWDGTaskId = TMOS_ProcessEventRegister(IWDG_ProcessEvent);
|
||||
// tmos_set_event(IWDGTaskId, IWIG_FEED_EVENT);
|
||||
tmos_start_task(IWDGTaskId, IWIG_FEED_EVENT, MS1_TO_SYSTEM_TIME(IWDG_FEED_MS));
|
||||
|
|
|
@ -231,7 +231,7 @@ void HAL_Init()
|
|||
halTaskID = TMOS_ProcessEventRegister(HAL_ProcessEvent);
|
||||
HAL_TimeInit();
|
||||
|
||||
#if 0
|
||||
#if 1
|
||||
// 开启独立看门狗会强制开启内部32K但是开启状态没有跟内部的RC32K寄存器同步
|
||||
// ,而复位时候是根据内部RC32K寄存器状态来决定是否启动RC32K
|
||||
// 不关闭ch584的内部32KRC
|
||||
|
@ -239,9 +239,7 @@ void HAL_Init()
|
|||
R8_CK32K_CONFIG |= RB_CLK_INT32K_PON;
|
||||
sys_safe_access_disable();
|
||||
#endif
|
||||
sys_safe_access_enable();
|
||||
R8_SAFE_LRST_CTRL |= RB_IWDG_RST_EN;
|
||||
sys_safe_access_disable();
|
||||
|
||||
|
||||
#if(defined HAL_SLEEP) && (HAL_SLEEP == TRUE)
|
||||
HAL_SleepInit();
|
||||
|
|
Loading…
Reference in New Issue