main.c 4.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138
  1. /****************************************Copyright (c)****************************************************
  2. **
  3. **
  4. **--------------File Info---------------------------------------------------------------------------------
  5. ** File name: main.c
  6. ** Descriptions:
  7. **
  8. **--------------------------------------------------------------------------------------------------------
  9. ** Created by:
  10. ** Created date:
  11. ** Version:
  12. ** Descriptions:
  13. **
  14. *********************************************************************************************************/
  15. #define THIS_FILE_ID 1
  16. /* Includes ------------------------------------------------------------------*/
  17. #include <stm32f10x.h>
  18. #include "includes.h"
  19. void MY_NVIC_Init()
  20. {
  21. NVIC_InitTypeDef NVIC_InitStructure;
  22. NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2); //选择中断分组2
  23. RunMake(THIS_FILE_ID);
  24. //串口1
  25. NVIC_InitStructure.NVIC_IRQChannel = USART1_IRQn;
  26. NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 1;
  27. NVIC_InitStructure.NVIC_IRQChannelSubPriority = 1;
  28. NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
  29. NVIC_Init(&NVIC_InitStructure);
  30. RunMake(THIS_FILE_ID);
  31. //串口2
  32. NVIC_InitStructure.NVIC_IRQChannel = USART2_IRQn;
  33. NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 1;
  34. NVIC_InitStructure.NVIC_IRQChannelSubPriority = 1;
  35. NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
  36. NVIC_Init(&NVIC_InitStructure);
  37. RunMake(THIS_FILE_ID);
  38. //串口3
  39. NVIC_InitStructure.NVIC_IRQChannel = USART3_IRQn;
  40. NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 1;
  41. NVIC_InitStructure.NVIC_IRQChannelSubPriority = 1;
  42. NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
  43. NVIC_Init(&NVIC_InitStructure);
  44. RunMake(THIS_FILE_ID);
  45. // //DMA中断设置
  46. NVIC_InitStructure.NVIC_IRQChannel = DMA1_Channel4_IRQn;
  47. NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 1;
  48. NVIC_InitStructure.NVIC_IRQChannelSubPriority = 1;
  49. NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
  50. NVIC_Init(&NVIC_InitStructure);
  51. RunMake(THIS_FILE_ID);
  52. NVIC_InitStructure.NVIC_IRQChannel = DMA1_Channel2_IRQn;
  53. NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 1;
  54. NVIC_InitStructure.NVIC_IRQChannelSubPriority = 1;
  55. NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
  56. NVIC_Init(&NVIC_InitStructure);
  57. NVIC_InitStructure.NVIC_IRQChannel = TIM4_IRQn;
  58. NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority=1;
  59. NVIC_InitStructure.NVIC_IRQChannelSubPriority = 1;
  60. NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
  61. NVIC_Init(&NVIC_InitStructure);
  62. NVIC_InitStructure.NVIC_IRQChannel = TIM3_IRQn;
  63. NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority=1;
  64. NVIC_InitStructure.NVIC_IRQChannelSubPriority = 1;
  65. NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
  66. NVIC_Init(&NVIC_InitStructure);
  67. NVIC_InitStructure.NVIC_IRQChannel = TIM2_IRQn;
  68. NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority=1;
  69. NVIC_InitStructure.NVIC_IRQChannelSubPriority = 1;
  70. NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
  71. NVIC_Init(&NVIC_InitStructure);
  72. //外部中断
  73. NVIC_InitStructure.NVIC_IRQChannel=EXTI15_10_IRQn;
  74. NVIC_InitStructure.NVIC_IRQChannelSubPriority = 2;
  75. NVIC_InitStructure.NVIC_IRQChannelCmd=ENABLE;
  76. NVIC_Init(&NVIC_InitStructure);
  77. }
  78. extern void DelayMs(unsigned short ms);
  79. void IWDG_Configuration(void)
  80. {
  81. RCC->CSR|=0x01;
  82. while(!((RCC->CSR>>1)&0x01));
  83. if(RCC_GetFlagStatus(RCC_FLAG_IWDGRST) != RESET)RCC_ClearFlag();
  84. //写入0x5555,用于允许狗狗寄存器写入功能
  85. IWDG_WriteAccessCmd(IWDG_WriteAccess_Enable);
  86. //狗狗时钟分频,40K/256=156HZ(6.4ms)
  87. IWDG_SetPrescaler(IWDG_Prescaler_256);
  88. //喂狗时间
  89. //IWDG_SetReload(200);1.28s/6.4MS=200 .注意不能大于0xfff
  90. IWDG_SetReload(2000);//3.2s/6.4MS=500 .注意不能大于0xfff //500
  91. //喂狗
  92. IWDG_ReloadCounter();
  93. //使能狗狗
  94. IWDG_Enable();
  95. }
  96. /**********************************************************************************************************
  97. main()
  98. **********************************************************************************************************/
  99. int main (void)
  100. {
  101. IWDG_Configuration();
  102. RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO,ENABLE);//复用功能IO 时钟使能 这里必须先使能复用IO的时钟,再关闭JTAG功能
  103. GPIO_PinRemapConfig(GPIO_Remap_SWJ_JTAGDisable, ENABLE); // JTAG-DP Disabled and SW-DP Enabled
  104. ExtWatchDogInit();
  105. FEED_EXTWATCHDOG();//喂狗
  106. IWDG_ReloadCounter();//喂狗
  107. FEED_EXTWATCHDOG();//喂狗
  108. MY_NVIC_Init();
  109. /* Initialize RTX and start init */
  110. os_sys_init_user(MainTask,1,stkMainTask,sizeof(stkMainTask));
  111. return (0);
  112. }
  113. /*********************************************************************************************************
  114. END FILE
  115. *********************************************************************************************************/