1234567891011121314151617181920212223242526272829303132333435363738394041424344 |
- #include "iwdg.h"
- INT32U g_dog = 0;
- OS_EVENT *iwdg_mutex = NULL;
- void iwdg_init(void)
- {
- IWDG_WriteAccessCmd(IWDG_WriteAccess_Enable);
- IWDG_SetPrescaler(IWDG_Prescaler_128);
- IWDG_SetReload(0XFFF);
- IWDG_ReloadCounter();
- IWDG_Enable();
- }
- void iwdg_feed(INT32U dog)
- {
- INT8U err = 0;
- INT32U all_dog = CURRENT_DOG | SOC_DOG | ADC_DOG | INCAN_RX_DOG | INCAN_TX_DOG | INCAN_INFO_DOG | CAN2_TX_DOG | CAN2_RX_DOG | FAULT_DIG_DOG | UART1_DOG | UART3_DOG | BALANCE_DOG | MISC_DOG | PROCESS_DOG;
- OSMutexPend(iwdg_mutex, 0, &err);
- g_dog |= dog;
- OSMutexPost(iwdg_mutex);
- if (g_dog == all_dog)
- {
-
- IWDG_ReloadCounter();
- OSMutexPend(iwdg_mutex, 0, &err);
- g_dog = 0;
- OSMutexPost(iwdg_mutex);
- }
- }
- void iwdg_disable(void)
- {
- }
|