reset.c 989 B

12345678910111213141516171819202122232425262728293031323334353637383940414243
  1. #include "reset.h"
  2. #include "timer.h"
  3. #include "usart.h"
  4. #include "myFile.h"
  5. static GPIO_InitTypeDef GPIO_InitStruct = {0};
  6. void resetConfig(void)
  7. {
  8. /*开启LED相关的GPIO外设时钟*/
  9. __HAL_RCC_GPIOG_CLK_ENABLE();
  10. /*选择要控制的GPIO引脚*/
  11. GPIO_InitStruct.Pin = RESET_PIN;
  12. /*设置引脚模式为输出模式*/
  13. GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;
  14. /*设置引脚为上拉模式*/
  15. GPIO_InitStruct.Pull = GPIO_PULLUP;
  16. /*设置引脚速率 */
  17. GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;
  18. /*调用库函数,使用上面配置的GPIO_InitStructure初始化GPIO*/
  19. HAL_GPIO_Init(GPIOF, &GPIO_InitStruct);
  20. }
  21. void reset_task(void const* arg)
  22. {
  23. while(1)
  24. {
  25. if(HAL_GPIO_ReadPin(GPIOG, RESET_PIN) == RESET)
  26. {
  27. DeleteDirFile("device.txt");
  28. __set_PRIMASK(1);
  29. NVIC_SystemReset();
  30. }
  31. vTaskDelay(100);
  32. }
  33. }
  34. void reset_task_creat(void)
  35. {
  36. osThreadDef(RESET, reset_task, osPriorityNormal, 0, configMINIMAL_STACK_SIZE * 4);
  37. osThreadCreate (osThread(RESET), NULL);
  38. }