12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273 |
- #include "sdk_common.h"
- #include "SEGGER_RTT.h"
- #include "nrf_drv_pwm.h"
- #include "usr_config.h"
- #include "nrf_drv_wdt.h"
- #include "nrf_delay.h"
- #include "exception.h"
- #include "system.h"
- #include "bsp_time.h"
- #include "bsp_wdt.h"
- static uint32_t feed_dog_time = 0;
- nrf_drv_wdt_channel_id m_channel_id;
- uint32_t Get_FeedWatchDogTime(void)
- {
- return feed_dog_time;
- }
- void feed_watchdog(void)
- {
- feed_dog_time = NRF_RTC0->COUNTER;
- nrf_drv_wdt_channel_feed(m_channel_id);
- }
- /**
- * @brief WDT events handler.
- */
- void wdt_event_handler(void)
- {
- DEBUG_LOG("wdt_event_handler:%d\n",TIME_GetTicks());
- Except_Unkown_Reset_WDT_Set();
- }
- static void WatchDog_Process(void)
- {
- feed_watchdog();
- // DEBUG_LOG("WatchDog_Process:%d\n",TIME_GetTicks());
- }
- static void bsp_wdt_init_process(void)
- {
- if(Except_TxError(EXCEPT_WDT_INIT,"bsp_wdt_init_error\r\n") == 0)
- {
- Process_Stop(bsp_wdt_init_process);
- }
- }
- void watchdog_init(void){
-
- int ret = 0;
- ret_code_t errCode;
-
- nrf_drv_wdt_config_t config = NRF_DRV_WDT_DEAFULT_CONFIG;
- config.interrupt_priority = WDT_IRQ_PRIORITY;
- config.reload_value = WDT_RELOAD_VALUE;
- errCode = nrf_drv_wdt_init(&config, wdt_event_handler);
- if(errCode != NRF_SUCCESS)ret = -1;
-
- errCode = nrf_drv_wdt_channel_alloc(&m_channel_id);
- if(errCode != NRF_SUCCESS)ret = -1;
-
- nrf_drv_wdt_enable();
- Process_Start(1000,"WatchDog",WatchDog_Process);
-
- if(ret == -1)
- {
- Process_Start(0,"bsp_wdt_init",bsp_wdt_init_process);
- }
- }
|