This commit is contained in:
parent
5ef5e9cd33
commit
2f9178215d
|
@ -223,7 +223,7 @@ __attribute__((noinline)) void Main_Circulation()
|
||||||
TMOS_SystemProcess();
|
TMOS_SystemProcess();
|
||||||
KEY_ProcessLoop();
|
KEY_ProcessLoop();
|
||||||
BSP_UART1_TxLoop();
|
BSP_UART1_TxLoop();
|
||||||
FEED_IWDG();
|
// FEED_IWDG();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -417,13 +417,10 @@ int main(void)
|
||||||
LED_ALL_OFF_DEINIT;
|
LED_ALL_OFF_DEINIT;
|
||||||
BEEP_OFF_DEINIT;
|
BEEP_OFF_DEINIT;
|
||||||
|
|
||||||
// logDebug("IWDG_Init 0");
|
|
||||||
// IWDG_Init(1500);
|
|
||||||
|
|
||||||
BSP_NoNeedBoost();
|
BSP_NoNeedBoost();
|
||||||
BSP_RequestSleep();
|
BSP_RequestSleep();
|
||||||
|
|
||||||
IWDG_Init(IWDG_MS);
|
IWDG_Init(IWDG_TIMEOUT_MS);
|
||||||
|
|
||||||
// 在连接间隔和广播间隔到来时,会进入回调中喂狗
|
// 在连接间隔和广播间隔到来时,会进入回调中喂狗
|
||||||
// LL_AdvertiseEventRegister(BLE_AdvertiseEventCB);
|
// LL_AdvertiseEventRegister(BLE_AdvertiseEventCB);
|
||||||
|
|
|
@ -2,7 +2,7 @@
|
||||||
* @Author : stark1898y 1658608470@qq.com
|
* @Author : stark1898y 1658608470@qq.com
|
||||||
* @Date : 2024-12-15 16:13:37
|
* @Date : 2024-12-15 16:13:37
|
||||||
* @LastEditors : stark1898y 1658608470@qq.com
|
* @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
|
* @FilePath : \BLE_TYQ_CH584M\BSP\inc\bsp_iwdg.h
|
||||||
* @Description :
|
* @Description :
|
||||||
*
|
*
|
||||||
|
@ -31,7 +31,8 @@
|
||||||
#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_MS (6000)
|
#define IWDG_TIMEOUT_MS (7000U)
|
||||||
|
#define IWDG_FEED_MS (3000U)
|
||||||
|
|
||||||
#define IWIG_FEED_EVENT (0x01 << 0)
|
#define IWIG_FEED_EVENT (0x01 << 0)
|
||||||
|
|
||||||
|
|
|
@ -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-15 18:34:10
|
* @LastEditTime : 2025-05-16 10:55:30
|
||||||
* @FilePath : \BLE_TYQ_CH584M\BSP\src\bsp_iwdg.c
|
* @FilePath : \BLE_TYQ_CH584M\BSP\src\bsp_iwdg.c
|
||||||
* @Description :
|
* @Description :
|
||||||
*
|
*
|
||||||
|
@ -30,7 +30,7 @@ uint16_t IWDG_ProcessEvent(uint8_t task_id, uint16_t events)
|
||||||
{
|
{
|
||||||
FEED_IWDG();
|
FEED_IWDG();
|
||||||
logDebug("IWDG feed");
|
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 (events ^ IWIG_FEED_EVENT);
|
||||||
}
|
}
|
||||||
return 0;
|
return 0;
|
||||||
|
@ -46,25 +46,28 @@ uint16_t IWDG_ProcessEvent(uint8_t task_id, uint16_t events)
|
||||||
void IWDG_Init(uint16_t ms)
|
void IWDG_Init(uint16_t ms)
|
||||||
{
|
{
|
||||||
uint16_t div = 512;
|
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;
|
uint16_t reload = (ms / tick_ms) + 1;
|
||||||
|
|
||||||
// 解除IWDG保护
|
// 解除IWDG保护
|
||||||
R32_IWDG_KR = 0x5555;
|
R32_IWDG_KR = 0x5555;
|
||||||
|
|
||||||
// R32_IWDG_CFG = (RB_PR & (div << 12)) | (RB_STOP_EN) | (reload & RB_RLR);
|
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 |= (7 << 12); // 32K分频512,时钟62.5Hz
|
||||||
R32_IWDG_CFG &= 0xFFFFF000;
|
// R32_IWDG_CFG &= 0xFFFFF000;
|
||||||
R32_IWDG_CFG |= 0x7D * 3; // 看门狗时间约256ms(0x10/(32K/512))
|
// // R32_IWDG_CFG |= 0x7D * 3; // 看门狗时间约6 s(0x10/(32K/512))
|
||||||
|
// R32_IWDG_CFG |= reload;
|
||||||
|
|
||||||
// 开启IWDG保护
|
// 开启IWDG保护
|
||||||
R32_IWDG_KR = 0xCCCC;
|
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);
|
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
|
// #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);
|
halTaskID = TMOS_ProcessEventRegister(HAL_ProcessEvent);
|
||||||
HAL_TimeInit();
|
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)
|
#if(defined HAL_SLEEP) && (HAL_SLEEP == TRUE)
|
||||||
HAL_SleepInit();
|
HAL_SleepInit();
|
||||||
#endif
|
#endif
|
||||||
|
|
|
@ -115,7 +115,6 @@ void SetSysClock(SYS_CLKTypeDef sc)
|
||||||
{
|
{
|
||||||
R8_HFCK_PWR_CTRL &= ~RB_CLK_XT32M_PON;
|
R8_HFCK_PWR_CTRL &= ~RB_CLK_XT32M_PON;
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
R8_SAFE_MODE_CTRL |= RB_SAFE_AUTO_EN;
|
R8_SAFE_MODE_CTRL |= RB_SAFE_AUTO_EN;
|
||||||
sys_safe_access_disable();
|
sys_safe_access_disable();
|
||||||
|
@ -130,8 +129,7 @@ void SetSysClock(SYS_CLKTypeDef sc)
|
||||||
*
|
*
|
||||||
* @return none
|
* @return none
|
||||||
*/
|
*/
|
||||||
__attribute__((section(".highcode_init")))
|
__attribute__((section(".highcode_init"))) void highcode_init(void)
|
||||||
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;
|
||||||
|
@ -236,7 +234,8 @@ void MachineMode_Call(MachineMode_Call_func func)
|
||||||
* @param none
|
* @param none
|
||||||
*
|
*
|
||||||
* @return none
|
* @return none
|
||||||
*/void SetPI_func()
|
*/
|
||||||
|
void SetPI_func()
|
||||||
{
|
{
|
||||||
write_csr(0xbc0, 0x25);
|
write_csr(0xbc0, 0x25);
|
||||||
}
|
}
|
||||||
|
@ -459,8 +458,7 @@ void WWDG_ClearFlag(void)
|
||||||
*/
|
*/
|
||||||
__INTERRUPT
|
__INTERRUPT
|
||||||
__HIGH_CODE
|
__HIGH_CODE
|
||||||
__attribute__((weak))
|
__attribute__((weak)) void HardFault_Handler(void)
|
||||||
void HardFault_Handler(void)
|
|
||||||
{
|
{
|
||||||
uint32_t v_mepc, v_mcause, v_mtval;
|
uint32_t v_mepc, v_mcause, v_mtval;
|
||||||
printf("hardfault\n");
|
printf("hardfault\n");
|
||||||
|
@ -593,8 +591,7 @@ int _write(int fd, char *buf, int size)
|
||||||
*
|
*
|
||||||
* @return size: Data length
|
* @return size: Data length
|
||||||
*/
|
*/
|
||||||
__attribute__((used))
|
__attribute__((used)) void *_sbrk(ptrdiff_t incr)
|
||||||
void *_sbrk(ptrdiff_t incr)
|
|
||||||
{
|
{
|
||||||
extern char _end[];
|
extern char _end[];
|
||||||
static char *curbrk = _end;
|
static char *curbrk = _end;
|
||||||
|
|
Loading…
Reference in New Issue