This commit is contained in:
parent
5ef5e9cd33
commit
2f9178215d
|
@ -223,7 +223,7 @@ __attribute__((noinline)) void Main_Circulation()
|
|||
TMOS_SystemProcess();
|
||||
KEY_ProcessLoop();
|
||||
BSP_UART1_TxLoop();
|
||||
FEED_IWDG();
|
||||
// FEED_IWDG();
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -417,13 +417,10 @@ int main(void)
|
|||
LED_ALL_OFF_DEINIT;
|
||||
BEEP_OFF_DEINIT;
|
||||
|
||||
// logDebug("IWDG_Init 0");
|
||||
// IWDG_Init(1500);
|
||||
|
||||
BSP_NoNeedBoost();
|
||||
BSP_RequestSleep();
|
||||
|
||||
IWDG_Init(IWDG_MS);
|
||||
IWDG_Init(IWDG_TIMEOUT_MS);
|
||||
|
||||
// 在连接间隔和广播间隔到来时,会进入回调中喂狗
|
||||
// LL_AdvertiseEventRegister(BLE_AdvertiseEventCB);
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
* @Author : stark1898y 1658608470@qq.com
|
||||
* @Date : 2024-12-15 16:13:37
|
||||
* @LastEditors : stark1898y 1658608470@qq.com
|
||||
* @LastEditTime : 2025-04-13 22:48:38
|
||||
* @LastEditTime : 2025-05-16 11:17:22
|
||||
* @FilePath : \BLE_TYQ_CH584M\BSP\inc\bsp_iwdg.h
|
||||
* @Description :
|
||||
*
|
||||
|
@ -31,7 +31,8 @@
|
|||
#define RB_WR_PROTECT 0x40000000 // RO, write protect
|
||||
#define RB_IWDG_EN 0x80000000 // RO, watch-dog enable
|
||||
|
||||
#define IWDG_MS (6000)
|
||||
#define IWDG_TIMEOUT_MS (7000U)
|
||||
#define IWDG_FEED_MS (3000U)
|
||||
|
||||
#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-15 18:34:10
|
||||
* @LastEditTime : 2025-05-16 10:55:30
|
||||
* @FilePath : \BLE_TYQ_CH584M\BSP\src\bsp_iwdg.c
|
||||
* @Description :
|
||||
*
|
||||
|
@ -30,7 +30,7 @@ uint16_t IWDG_ProcessEvent(uint8_t task_id, uint16_t events)
|
|||
{
|
||||
FEED_IWDG();
|
||||
logDebug("IWDG feed");
|
||||
tmos_start_task(task_id, IWIG_FEED_EVENT, 5000);
|
||||
tmos_start_task(task_id, IWIG_FEED_EVENT, MS1_TO_SYSTEM_TIME(IWDG_FEED_MS));
|
||||
return (events ^ IWIG_FEED_EVENT);
|
||||
}
|
||||
return 0;
|
||||
|
@ -46,25 +46,28 @@ uint16_t IWDG_ProcessEvent(uint8_t task_id, uint16_t events)
|
|||
void IWDG_Init(uint16_t ms)
|
||||
{
|
||||
uint16_t div = 512;
|
||||
float tick_ms = 1000 / (32000 / 512);
|
||||
// float tick_ms = 1000 / (32000 / 512);
|
||||
uint8_t tick_ms = 16;
|
||||
|
||||
uint16_t reload = (ms / tick_ms) + 1;
|
||||
|
||||
// 解除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; // 看门狗时间约256ms(0x10/(32K/512))
|
||||
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;
|
||||
|
||||
logDebug("R32_IWDG_CFG = %X", R32_IWDG_CFG);
|
||||
logDebug("IWDG = %d, %.1f ms", reload, (reload * 1000) / 62.5);
|
||||
|
||||
IWDGTaskId = TMOS_ProcessEventRegister(IWDG_ProcessEvent);
|
||||
tmos_set_event(IWDGTaskId, IWIG_FEED_EVENT);
|
||||
// tmos_set_event(IWDGTaskId, IWIG_FEED_EVENT);
|
||||
tmos_start_task(IWDGTaskId, IWIG_FEED_EVENT, MS1_TO_SYSTEM_TIME(IWDG_FEED_MS));
|
||||
}
|
||||
|
||||
// #define RB_RESET_FLAG 0x07 // RO: recent reset flag
|
||||
|
|
13
HAL/MCU.c
13
HAL/MCU.c
|
@ -230,6 +230,19 @@ void HAL_Init()
|
|||
{
|
||||
halTaskID = TMOS_ProcessEventRegister(HAL_ProcessEvent);
|
||||
HAL_TimeInit();
|
||||
|
||||
#if 0
|
||||
// 开启独立看门狗会强制开启内部32K但是开启状态没有跟内部的RC32K寄存器同步
|
||||
// ,而复位时候是根据内部RC32K寄存器状态来决定是否启动RC32K
|
||||
// 不关闭ch584的内部32KRC
|
||||
sys_safe_access_enable();
|
||||
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();
|
||||
#endif
|
||||
|
|
|
@ -115,7 +115,6 @@ void SetSysClock(SYS_CLKTypeDef sc)
|
|||
{
|
||||
R8_HFCK_PWR_CTRL &= ~RB_CLK_XT32M_PON;
|
||||
}
|
||||
|
||||
}
|
||||
R8_SAFE_MODE_CTRL |= RB_SAFE_AUTO_EN;
|
||||
sys_safe_access_disable();
|
||||
|
@ -130,8 +129,7 @@ void SetSysClock(SYS_CLKTypeDef sc)
|
|||
*
|
||||
* @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;
|
||||
R8_SAFE_MODE_CTRL &= ~RB_SAFE_AUTO_EN;
|
||||
|
@ -236,7 +234,8 @@ void MachineMode_Call(MachineMode_Call_func func)
|
|||
* @param none
|
||||
*
|
||||
* @return none
|
||||
*/void SetPI_func()
|
||||
*/
|
||||
void SetPI_func()
|
||||
{
|
||||
write_csr(0xbc0, 0x25);
|
||||
}
|
||||
|
@ -459,8 +458,7 @@ void WWDG_ClearFlag(void)
|
|||
*/
|
||||
__INTERRUPT
|
||||
__HIGH_CODE
|
||||
__attribute__((weak))
|
||||
void HardFault_Handler(void)
|
||||
__attribute__((weak)) void HardFault_Handler(void)
|
||||
{
|
||||
uint32_t v_mepc, v_mcause, v_mtval;
|
||||
printf("hardfault\n");
|
||||
|
@ -593,8 +591,7 @@ int _write(int fd, char *buf, int size)
|
|||
*
|
||||
* @return size: Data length
|
||||
*/
|
||||
__attribute__((used))
|
||||
void *_sbrk(ptrdiff_t incr)
|
||||
__attribute__((used)) void *_sbrk(ptrdiff_t incr)
|
||||
{
|
||||
extern char _end[];
|
||||
static char *curbrk = _end;
|
||||
|
|
Loading…
Reference in New Issue