123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899 |
- #include <rtthread.h>
- #include <rtdevice.h>
- #include <bms.h>
- #include <hardware.h>
- #define LOG_TAG "WDT"
- #define LOG_LVL LOG_LVL_INFO
- #include <ulog.h>
- #define IWDG_DEVICE_NAME "wdt" /* 看门狗设备名称 */
- static rt_device_t wdg_dev = RT_NULL; /* 看门狗设备句柄 */
- static rt_thread_t wdg_thread = RT_NULL;
- void watchdog_idle_hook(void)
- {
- if(wdg_dev)
- {
- rt_device_control(wdg_dev, RT_DEVICE_CTRL_WDT_KEEPALIVE, NULL);
-
-
- }
-
-
- }
-
- rt_uint32_t A,B;
- static void wdg_thread_entry(void* parameter)
- {
- uint16_t rsoc; //剩余容量百分比
- while(1)
- {
-
- if(wdg_dev)
- {
- rt_device_control(wdg_dev, RT_DEVICE_CTRL_WDT_KEEPALIVE, NULL);
- // LOG_I("w");
- }
- rsoc = get_bat_rsoc();
- if(rsoc>=95)
- {
- BTY_AUTO_OFF;
- }
- // LOG_I("time:%d",rt_tick_get());
- rt_thread_delay(1000);
- }
- }
- static int iwdg_init(void)
- {
- rt_err_t ret = RT_EOK;
- rt_uint32_t timeout = 5; /* s,溢出时间 */
- wdg_dev = rt_device_find(IWDG_DEVICE_NAME);
- if (!wdg_dev)
- {
- rt_kprintf("find %s failed!\n", IWDG_DEVICE_NAME);
- return -RT_ERROR;
- }
- /* 初始化设备 */
- ret = rt_device_init(wdg_dev);
- if (ret != RT_EOK)
- {
- rt_kprintf("initialize %s failed!\n", IWDG_DEVICE_NAME);
- return -RT_ERROR;
- }
- /* 设置看门狗溢出时间 */
- ret = rt_device_control(wdg_dev, RT_DEVICE_CTRL_WDT_SET_TIMEOUT, &timeout);
- if (ret != RT_EOK)
- {
- rt_kprintf("set %s timeout failed!\n", IWDG_DEVICE_NAME);
- return -RT_ERROR;
- }
- rt_device_control(wdg_dev, RT_DEVICE_CTRL_WDT_START, NULL);
-
- /* 设置空闲线程回调函数 */
- rt_thread_idle_sethook(watchdog_idle_hook);
- LOG_I("set watchdog %s timeout: %us", IWDG_DEVICE_NAME, timeout);
-
-
- wdg_thread =
- rt_thread_create( "wdg_thread",
- wdg_thread_entry,
- RT_NULL,
- 4096,
- 29,
- 20);
- if (wdg_thread != RT_NULL)
- {
- rt_thread_startup(wdg_thread);
- LOG_I(" wdg_thread create..");
- }
- return ret;
- }
- INIT_APP_EXPORT(iwdg_init);
|