main.c 2.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970
  1. /**********************************************************************************************************
  2. 看门狗复位演示,若sw2长按LED1长亮,喂狗,看门狗不超时复位
  3. 若sw2没有被按下,LED1闪烁。看门狗一直超时复位。
  4. **********************************************************************************************************/
  5. #include <REGtenxTM52F1386.h>
  6. #include "TM52F1386_bsp.h"
  7. #include <intrins.h>
  8. sbit LED1 = P1^5;
  9. /*
  10. 系统频率设置为二分频
  11. */
  12. /******************************************************************************************
  13. ** 函数名称: gpio_light_init
  14. ** 函数描述: IO模式配置
  15. ** 输入参数: 无
  16. ** 输出参数: 无
  17. *******************************************************************************************/
  18. void gpio_init()
  19. {
  20. PORTIDX = PORT1;
  21. PINMOD54 = PINMOD54 & ~0xf0 | PIN_H_MODE_PP; //p15为LED1控制引脚,推挽输出
  22. P1_5 = 1;
  23. PORTIDX = PORT5;
  24. PINMOD76 = PINMOD76 &~0xf0 | PIN_H_MODE_OD_IPU; //P57为SW2按键的检测口,开漏上拉输入
  25. P5_7 = 1;
  26. }
  27. /******************************************************************************************
  28. ** 函数名称: wdg_init
  29. ** 函数描述: 看门狗初始化函数
  30. ** 输入参数: 无
  31. ** 输出参数: 无
  32. *******************************************************************************************/
  33. void wdg_init()
  34. {
  35. OPTION = (OPTION &~ OPTION_WDTPSC_MASK) | (0 < OPTION_WDTPSC_POS); //240MS
  36. AUX2 = (AUX2 &~ AUX2_WDTE_MASK) | (2 << AUX2_WDTE_POS); //看门狗在快钟和慢钟模式下使能,空闲/停止/暂停模式下禁止
  37. AUX1 = (AUX1 &~ AUX1_CLRWDT_MASK) | (0);
  38. CLR_WDT; //设置以清除看门狗定时器
  39. }
  40. int a = 1;
  41. /******************************************************************************************
  42. ** 函数名称: main
  43. ** 函数描述: main函数
  44. ** 输入参数: 无
  45. ** 输出参数: 无
  46. ** 说 明: 上电后,喂狗,LED长亮;不喂狗亮240ms,灭200ms
  47. *******************************************************************************************/
  48. void main (void)
  49. {
  50. bsp_clock_init(); // 系统快钟18.432 div 2 = 9.216Mhz
  51. gpio_init();
  52. wdg_init();
  53. LED1 = 0; //点亮LED
  54. while (1)
  55. {
  56. bsp_delay_ms (80);
  57. if(P5_7 == 0) //SW2按下为低
  58. {
  59. CLRWDT = 1; //喂狗
  60. }
  61. }
  62. }