[KungFu8位 MCU] ChipON 看门狗休眠例程分享

[复制链接]
1685|7
 楼主| yysforever 发表于 2017-10-31 20:51 | 显示全部楼层 |阅读模式
本帖最后由 yysforever 于 2017-10-31 20:52 编辑
  1. /****************************************************************************************
  2. *
  3. * 文件名: main.c
  4. * 项目名: 22-WDT_IDLE_1
  5. * 版 本: v1.0
  6. * 日 期: 2016年05月31日 10时03分10秒
  7. * 作 者: Administrator
  8. * 程序说明:看门狗休眠唤醒参考例程,最长定时2.3S,看门狗无软开关。
  9. * 适用芯片:KF8FXXX系列——KF8F2XX、KF8F3XX
  10. *                         KF8SXXXX系列——KF8S210、KF8S310、KF8S10XX
  11. ****************************************************************************************/
  12. #include<KF8S1011.h>
  13. /****************************************************************************************
  14. * 函数名:   init_mcu
  15. * 函数功能:mcu初始化函数
  16. * 入口参数:无
  17. * 返回:       无
  18. ****************************************************************************************/
  19. void init_mcu()
  20. {
  21.         /***时钟初始化****/
  22.         OSCCTL = 0x70;          //设置为16M
  23.         /***端口初始化****/
  24.         TR0 = 0x08;                                //设置VPP P03端口为输入,P0其他I/O口为输出
  25.         TR1 = 0x00;                                //设置P1端口为输出
  26.         TR2 = 0x00;                                //设置P2端口为输出
  27.         TR3 = 0x00;                                //设置P3端口为输出
  28.         TR4 = 0x00;
  29.         P0 = 0;
  30.         P1 = 0;
  31.         P2 = 0;
  32.         P3 = 0;
  33.         P4 = 0;
  34. }
  35. /****************************************************************************************
  36. * 函数名:   init_WDT
  37. * 函数功能:mcu初始化函数
  38. * 入口参数:无
  39. * 返回:       无
  40. ****************************************************************************************/
  41. void init_WDT()
  42. {
  43.         PSA = 1;          //预分频器控制位,选择用于WDT
  44.         /***分频比****/
  45.         PS0 = 0;          //1:1分频,18ms定时
  46.     PS1 = 0;
  47.     PS2 = 0;
  48. }
  49. //主函数
  50. void main()
  51. {
  52.         init_mcu();
  53.         init_WDT();
  54.         while(1)
  55.         {
  56.                 _CWDT();
  57.                 P13=!P13;
  58.                 _NOP_();
  59.                 _NOP_();
  60.                 _IDLE();       // 进入睡眠状态
  61.         }
  62. }


 楼主| yysforever 发表于 2017-10-31 20:51 | 显示全部楼层
  1. /****************************************************************************************
  2. *
  3. * 文件名: main.c
  4. * 项目名: 22-WDT_IDLE_2
  5. * 版 本: v1.0
  6. * 日 期: 2016年05月31日 14时10分27秒
  7. * 作 者: Administrator
  8. * 程序说明:看门狗休眠唤醒参考例程,最长定时2.3S,看门狗可软件开关。
  9. * 适用芯片:KF8TS23XX系列——KF8TS2302、KF8TS2308、KF8TS2310、KF8TS2314
  10. *                         KF8TS24XX系列——KF8TS2402、KF8TS2408、KF8TS2410、KF8TS2414
  11. *                         KF8VXXX系列——KF8V111、KF8V120、KF8V200、KF8V204、KF8V211、KF8V216、KF8V218、KF8V220
  12. ****************************************************************************************/
  13. #include<KF8TS2410.h>
  14. /****************************************************************************************
  15. * 函数名:   init_mcu
  16. * 函数功能:mcu初始化函数
  17. * 入口参数:无
  18. * 返回:       无
  19. ****************************************************************************************/
  20. void init_mcu()
  21. {
  22.         /***时钟初始化****/
  23.         OSCCTL = 0x70;          //设置为16M
  24.         /***端口初始化****/
  25.         TR0 = 0x08;                                //设置VPP P03端口为输入,P0其他I/O口为输出
  26.         TR1 = 0x00;                                //设置P1端口为输出
  27.         TR2 = 0x00;                                //设置P2端口为输出
  28.         P0LR = 0;
  29.         P1LR = 0;
  30.         P2LR = 0;
  31.         P0 = 0;
  32.         P1 = 0;
  33.         P2 = 0;
  34. }
  35. /****************************************************************************************
  36. * 函数名:   init_WDT
  37. * 函数功能:mcu初始化函数
  38. * 入口参数:无
  39. * 返回:       无
  40. ****************************************************************************************/
  41. void init_WDT()
  42. {
  43.         PSA = 1;          //预分频器控制位,选择用于WDT
  44.         /***分频比****/
  45.         PS0 = 0;          //1:1分频,18ms定时
  46.     PS1 = 0;
  47.     PS2 = 0;
  48. }
  49. //主函数
  50. void main()
  51. {
  52.         init_mcu();
  53.         init_WDT();
  54.         while(1)
  55.         {

  56.                 P1LR3=!P1LR3;
  57.                 _NOP_();
  58.                 _NOP_();
  59.                 SWDTEN=1;
  60.                 _CWDT();
  61.                 _IDLE();       // 进入睡眠状态
  62.                 SWDTEN=0;
  63.         }
  64. }
 楼主| yysforever 发表于 2017-10-31 20:52 | 显示全部楼层
  1. /****************************************************************************************
  2. *
  3. * 文件名: main.c
  4. * 项目名: 22-WDT_IDLE_3
  5. * 版 本: v1.0
  6. * 日 期: 2016年05月31日 14时25分28秒
  7. * 作 者: Administrator
  8. * 程序说明:看门狗休眠唤醒参考例程,最长定时268S,看门狗可软件开关。
  9. * 适用芯片:KF8FXXXX系列——KF8F2156、KF8F3156、KF8F4156、KF8F3155、KF8F4155、KF8F4158
  10. *                         KF8TS25XX系列——KF8TS2508、KF8TS2510、KF8TS2514、KF8TS2516
  11. *                         KF8TS27XX系列——KF8TS2708、KF8TS2710、KF8TS2714、KF8TS2716
  12. *                         KF8VXXX系列——KF8V327、KF8V427、KF8V429
  13. *                         KF8A3001
  14. ****************************************************************************************/
  15. #include<KF8TS2716.h>
  16. /****************************************************************************************
  17. * 函数名:   init_mcu
  18. * 函数功能:mcu初始化函数
  19. * 入口参数:无
  20. * 返回:       无
  21. ****************************************************************************************/
  22. void init_mcu()
  23. {
  24.         /***时钟初始化****/
  25.         OSCCTL = 0x60;          //设置为16M
  26.         /***端口初始化****/
  27.         TR0 = 0x04;                                //设置VPP P02端口为输入,P0其他I/O口为输出
  28.         TR1 = 0x00;                                //设置P1端口为输出
  29.         TR2 = 0x00;                                //设置P2端口为输出
  30.         TR3 = 0x00;                                //设置P3端口为输出
  31.         P0LR = 0;
  32.         P1LR = 0;
  33.         P2LR = 0;
  34.         P3LR = 0;
  35.         P0 = 0;
  36.         P1 = 0;
  37.         P2 = 0;
  38.         P3 = 0;
  39. }
  40. /****************************************************************************************
  41. * 函数名:   init_WDT
  42. * 函数功能:mcu初始化函数
  43. * 入口参数:无
  44. * 返回:       无
  45. ****************************************************************************************/
  46. void init_WDT()
  47. {

  48.         WDTPS =0xFB;          //看门狗定时器预分频1:65536
  49.         PSA = 1;          //预分频器控制位,选择用于WDT
  50.         /***分频比****/
  51.         PS0 = 0;          //1:1分频,18ms定时
  52.     PS1 = 0;
  53.     PS2 = 0;
  54. }
  55. //主函数
  56. void main()
  57. {
  58.         init_mcu();
  59.         init_WDT();
  60.         while(1)
  61.         {
  62.                 P1LR3=!P1LR3;
  63.                 _NOP_();
  64.                 _NOP_();
  65.                 SWDTEN=1;
  66.                 _CWDT();
  67.                 _IDLE();       // 进入睡眠状态
  68.                 SWDTEN=0;
  69.         }
  70. }
zzzhui 发表于 2017-10-31 21:19 | 显示全部楼层
代码很整齐
engao 发表于 2017-11-20 15:33 | 显示全部楼层
也有外置的看门狗
haolaishi 发表于 2017-11-22 20:20 | 显示全部楼层
一般看门狗的定时时间设置为多长为好呢?
afgnhgrf 发表于 2017-11-23 13:34 | 显示全部楼层
这个好,设置的不好,导致老复位
zhiyy 发表于 2017-11-23 14:12 | 显示全部楼层
这个好,解决实际问题
您需要登录后才可以回帖 登录 | 注册

本版积分规则

20

主题

254

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部