main.c 7.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203
  1. /*
  2. *********************************************************************************************************
  3. * 函 数 名: main
  4. * 功能说明: c程序入口
  5. * 形 参:无
  6. * 返 回 值: 错误代码(无需处理)
  7. *********************************************************************************************************
  8. */
  9. #include "main.h"
  10. void DumpHEX(uint8_t *buffer, uint32_t len)
  11. {
  12. uint32_t i;
  13. printf("[DumpHEX]Length:%d ", len);
  14. for (i = 0; i < len; i++)
  15. {
  16. if (i % 16 == 0)
  17. printf("\r\n");
  18. else if (i % 8 == 0)
  19. printf(" ");
  20. else
  21. printf(":");
  22. printf("%02x", buffer[i]);
  23. }
  24. printf("\r\n");
  25. }
  26. int main(void)
  27. {
  28. #if 0
  29. /* 打开GOIOI 端口时钟 */
  30. *(unsigned int *)(0x40023800 + 0x30) |= (1 << 8);
  31. /* PI10 为输出 */
  32. *(unsigned int *)(0x40022000 + 0x00) &= ~((0x03) << (2 * 10));
  33. *(unsigned int *)(0x40022000 + 0x00) |= (1 << (2 * 10));
  34. /* PI10 输出高电平 */
  35. *(unsigned int *)(0x40022000 + 0x14) |= (1 << 10);
  36. /* PI10 输出低电平 */
  37. *(unsigned int *)(0x40022000 + 0x14) &= ~(1 << 10);
  38. #elif 0
  39. bsp_init();
  40. while (1)
  41. {
  42. GPIO_ResetBits(GPIOI, GPIO_Pin_10);
  43. Delay(0xFFFFFFFF);
  44. // GPIO_SetBits(GPIOI, GPIO_Pin_10);
  45. // Delay(0xFFFFFFFF);
  46. GPIO_ResetBits(GPIOF, GPIO_Pin_7);
  47. Delay(0xFFFFFF);
  48. // GPIO_SetBits(GPIOF, GPIO_Pin_7);
  49. // Delay(0xFFFFFF);
  50. GPIO_ResetBits(GPIOF, GPIO_Pin_8);
  51. Delay(0xFFFFFF);
  52. // GPIO_SetBits(GPIOF, GPIO_Pin_8);
  53. // Delay(0xFFFFFF);
  54. GPIO_ResetBits(GPIOC, GPIO_Pin_2);
  55. Delay(0xFFFFFF);
  56. // GPIO_SetBits(GPIOC, GPIO_Pin_2);
  57. // Delay(0xFFFFFF);
  58. };
  59. #elif 1
  60. NVIC_PriorityGroupConfig(NVIC_PriorityGroup_4);
  61. OSInit();
  62. bsp_init();
  63. RegisterIec10x();
  64. /* init task */
  65. /* 创建一个启动任务(也就是主任务)。启动任务会创建所有的应用程序任务 */
  66. OSTaskCreateExt(init_task, /* 启动任务函数指针 */
  67. (void *)0, /* 传递给任务的参数 */
  68. (OS_STK *)&init_task_stk[INIT_STK_SIZE - 1], /* 指向任务栈栈顶的指针 */
  69. INIT_TASK_PRIO, /* 任务的优先级,必须唯一,数字越低优先级越高 */
  70. INIT_TASK_PRIO, /* 任务ID,一般和任务优先级相同 */
  71. (OS_STK *)&init_task_stk[0], /* 指向任务栈栈底的指针。OS_STK_GROWTH
  72. 决定堆栈增长方向 */
  73. INIT_STK_SIZE, /* 任务栈大小 */
  74. (void *)0, /* 一块用户内存区的指针,用于任务控制块TCB的扩展功能
  75. (如任务切换时保存CPU浮点寄存器的数据)。一般不用,填0即可 */
  76. OS_TASK_OPT_STK_CHK | OS_TASK_OPT_STK_CLR); /* 任务选项字 */
  77. OSStart();
  78. #endif
  79. }
  80. /*!
  81. \brief init task
  82. \param[in] pvParameters not used
  83. \param[out] none
  84. \retval none
  85. */
  86. void init_task(void *pvParameters)
  87. {
  88. SysTick_Config(SystemCoreClock / OS_TICKS_PER_SEC);
  89. /* configure the systick handler priority */
  90. NVIC_SetPriority(SysTick_IRQn, 0x00U);
  91. OSTaskCreateExt((void (*)(void *))led_task, /* 启动任务函数指针 */
  92. (void *)0, /* 传递给任务的参数 */
  93. (OS_STK *)&LED_TASK_STK[LED0_STK_SIZE - 1], /* 指向任务栈栈顶的指针 */
  94. LED_RX_PRIO, /* 任务的优先级,必须唯一,数字越低优先级越高 */
  95. LED_RX_PRIO, /* 任务ID,一般和任务优先级相同 */
  96. (OS_STK *)&LED_TASK_STK[0], /* 指向任务栈栈底的指针。OS_STK_GROWTH 决定堆栈增长方向 */
  97. LED0_STK_SIZE, /* 任务栈大小 */
  98. (void *)0, /* 一块用户内存区的指针,用于任务控制块TCB的扩展功能
  99. (如任务切换时保存CPU浮点寄存器的数据)。一般不用,填0即可 */
  100. OS_TASK_OPT_STK_CHK | OS_TASK_OPT_STK_CLR | OS_TASK_OPT_SAVE_FP); /* 任务选项字 */
  101. OSTaskCreateExt((void (*)(void *))misc_task,
  102. (void *)0,
  103. (OS_STK *)&misc_task_stk[MISC_TASK_STK_SIZE - 1],
  104. (INT8U)MISC_PRIO,
  105. (INT16U)MISC_PRIO,
  106. (OS_STK *)&misc_task_stk[0],
  107. (INT32U)MISC_TASK_STK_SIZE,
  108. (void *)0,
  109. (INT16U)OS_TASK_OPT_STK_CHK | OS_TASK_OPT_STK_CLR | OS_TASK_OPT_SAVE_FP);
  110. // OSTaskCreateExt((void (*)(void *))modbus_master_task,
  111. // (void *)0,
  112. // (OS_STK *)&uart1_task_stk[UART1_TASK_STK_SIZE - 1],
  113. // (INT8U)UART1_TASK_PRIO,
  114. // (INT16U)UART1_TASK_PRIO,
  115. // (OS_STK *)&uart1_task_stk[0],
  116. // (INT32U)UART1_TASK_STK_SIZE,
  117. // (void *)0,
  118. // (INT16U)OS_TASK_OPT_STK_CHK | OS_TASK_OPT_STK_CLR | OS_TASK_OPT_SAVE_FP);
  119. /* 485 modbus从机模式 */
  120. OSTaskCreateExt((void (*)(void *))modbus_slave_task,
  121. (void *)0,
  122. (OS_STK *)&uart3_task_stk[UART3_TASK_STK_SIZE - 1],
  123. (INT8U)UART3_TASK_PRIO,
  124. (INT16U)UART3_TASK_PRIO,
  125. (OS_STK *)&uart3_task_stk[0],
  126. (INT32U)UART3_TASK_STK_SIZE,
  127. (void *)0,
  128. (INT16U)OS_TASK_OPT_STK_CHK | OS_TASK_OPT_STK_CLR | OS_TASK_OPT_SAVE_FP);
  129. OSTaskCreateExt((void (*)(void *))net_task,
  130. (void *)0,
  131. (OS_STK *)&net_task_stk[NET_TASK_STK_SIZE - 1],
  132. (INT8U)NET_PRIO,
  133. (INT16U)NET_PRIO,
  134. (OS_STK *)&net_task_stk[0],
  135. (INT32U)NET_TASK_STK_SIZE,
  136. (void *)0,
  137. (INT16U)OS_TASK_OPT_STK_CHK | OS_TASK_OPT_STK_CLR | OS_TASK_OPT_SAVE_FP);
  138. }
  139. void misc_task(void)
  140. {
  141. INT8U cnt = 0;
  142. INT16U save_cnt = 0;
  143. while (1)
  144. {
  145. iwdg_feed(MISC_DOG);
  146. OSTimeDly(500);
  147. LED3_RUN_TOGGLE;
  148. // if ((cnt % 10 == 0) && (cnt != 0))
  149. // {
  150. // continue;
  151. // }
  152. // if ((cnt % 25 == 0) && (cnt != 0))
  153. // {
  154. // LED3_RUN_TOGGLE;
  155. // }
  156. // if ((cnt % 15 == 0) && (cnt != 0))
  157. // {
  158. // continue;
  159. // }
  160. // if (cnt == 10)
  161. // {
  162. // continue;
  163. // }
  164. // if (cnt >= 50)
  165. // {
  166. // cnt = 0;
  167. // }
  168. // else
  169. // {
  170. // cnt++;
  171. // }
  172. // if (save_cnt >= 1500)
  173. // {
  174. // printf(1111);
  175. // save_cnt = 0;
  176. // }
  177. // else
  178. // {
  179. // save_cnt++;
  180. // }
  181. };
  182. }