main.c 1.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465
  1. /* MAIN.C file
  2. *
  3. * Copyright (c) 2002-2016 LCG
  4. */
  5. #define _MAIN_C
  6. #include "main.h"
  7. #include "iwdg.h"
  8. #include "tasks.h"
  9. #include "timer1.h"
  10. #include "timer2.h"
  11. #include "timer4.h"
  12. #include "gpio.h"
  13. #include "iic.h"
  14. #include "adc.h"
  15. // xxddq.h的时间变量
  16. volatile unsigned short timers[MAXTASKS];
  17. // BZY_STM8版本号
  18. uchar version = 2;
  19. void main() {
  20. int i = 0,j=0;
  21. CLK_CKDIVR = 0x08; //设置系统时钟为8MHZ
  22. //CLK_CKDIVR = 0x00; //设置系统时钟为16MHZ
  23. CLK_ICKR = 0x08; //打开低速时钟源
  24. CFG_GCR |= 0x01; //禁止SWIM,复用PD1
  25. GPIO_INIT();
  26. /*
  27. //PC7通过蜂鸣器测试看门狗,测试stm8复位用;
  28. TEST_OUT_DDR = 1;
  29. TEST_OUT_CR1 = 1;
  30. TEST_OUT_CR2 = 1;
  31. TEST_OUT_ODR = 1;
  32. delay_ms(2000);
  33. TEST_OUT_ODR = 0;
  34. delay_ms(2000);
  35. TEST_OUT_ODR = 1;
  36. delay_ms(2000);
  37. TEST_OUT_ODR = 0;
  38. */
  39. IWDG_INIT();
  40. //TIM1_INIT();
  41. TIM1_PWM_INIT();
  42. TIM4_INIT();
  43. TIM2_INIT();
  44. ADC_INIT();
  45. IIC_Init();
  46. _asm("rim"); //开总中断
  47. stm8_data.version = version;
  48. IIC_Init();
  49. INITTASKS(); //初始化任务函数
  50. while (1) {
  51. RUNTASK(safeTask,0);
  52. RUNTASK(safeIot,1);
  53. RUNTASK(getvbat,2);
  54. RUNTASK(control_task,3);
  55. RUNTASK(fsl_task,4);
  56. }
  57. }