main.c 5.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125
  1. /*
  2. *********************************************************************************************************
  3. * 函 数 名: main
  4. * 功能说明: c程序入口
  5. * 形 参:无
  6. * 返 回 值: 错误代码(无需处理)
  7. *********************************************************************************************************
  8. */
  9. #include "main.h"
  10. int main(void)
  11. {
  12. #if 0
  13. /* 打开GOIOI 端口时钟 */
  14. *(unsigned int *)(0x40023800 + 0x30) |= (1 << 8);
  15. /* PI10 为输出 */
  16. *(unsigned int *)(0x40022000 + 0x00) &= ~((0x03) << (2 * 10));
  17. *(unsigned int *)(0x40022000 + 0x00) |= (1 << (2 * 10));
  18. /* PI10 输出高电平 */
  19. *(unsigned int *)(0x40022000 + 0x14) |= (1 << 10);
  20. /* PI10 输出低电平 */
  21. *(unsigned int *)(0x40022000 + 0x14) &= ~(1 << 10);
  22. #elif 0
  23. bsp_init();
  24. while (1)
  25. {
  26. GPIO_ResetBits(GPIOI, GPIO_Pin_10);
  27. Delay(0xFFFFFFFF);
  28. // GPIO_SetBits(GPIOI, GPIO_Pin_10);
  29. // Delay(0xFFFFFFFF);
  30. GPIO_ResetBits(GPIOF, GPIO_Pin_7);
  31. Delay(0xFFFFFF);
  32. // GPIO_SetBits(GPIOF, GPIO_Pin_7);
  33. // Delay(0xFFFFFF);
  34. GPIO_ResetBits(GPIOF, GPIO_Pin_8);
  35. Delay(0xFFFFFF);
  36. // GPIO_SetBits(GPIOF, GPIO_Pin_8);
  37. // Delay(0xFFFFFF);
  38. GPIO_ResetBits(GPIOC, GPIO_Pin_2);
  39. Delay(0xFFFFFF);
  40. // GPIO_SetBits(GPIOC, GPIO_Pin_2);
  41. // Delay(0xFFFFFF);
  42. };
  43. #elif 1
  44. NVIC_PriorityGroupConfig(NVIC_PriorityGroup_4);
  45. OSInit();
  46. bsp_init();
  47. /* init task */
  48. /* 创建一个启动任务(也就是主任务)。启动任务会创建所有的应用程序任务 */
  49. OSTaskCreateExt(init_task, /* 启动任务函数指针 */
  50. (void *)0, /* 传递给任务的参数 */
  51. (OS_STK *)&init_task_stk[INIT_STK_SIZE - 1], /* 指向任务栈栈顶的指针 */
  52. INIT_TASK_PRIO, /* 任务的优先级,必须唯一,数字越低优先级越高 */
  53. INIT_TASK_PRIO, /* 任务ID,一般和任务优先级相同 */
  54. (OS_STK *)&init_task_stk[0], /* 指向任务栈栈底的指针。OS_STK_GROWTH 决定堆栈增长方向 */
  55. INIT_STK_SIZE, /* 任务栈大小 */
  56. (void *)0, /* 一块用户内存区的指针,用于任务控制块TCB的扩展功能
  57. (如任务切换时保存CPU浮点寄存器的数据)。一般不用,填0即可 */
  58. OS_TASK_OPT_STK_CHK | OS_TASK_OPT_STK_CLR); /* 任务选项字 */
  59. OSStart();
  60. #endif
  61. }
  62. /*!
  63. \brief init task
  64. \param[in] pvParameters not used
  65. \param[out] none
  66. \retval none
  67. */
  68. void init_task(void *pvParameters)
  69. {
  70. SysTick_Config(SystemCoreClock / OS_TICKS_PER_SEC);
  71. /* configure the systick handler priority */
  72. NVIC_SetPriority(SysTick_IRQn, 0x00U);
  73. OSTaskCreateExt((void (*)(void *))led_task, /* 启动任务函数指针 */
  74. (void *)0, /* 传递给任务的参数 */
  75. (OS_STK *)&LED0_TASK_STK[LED0_STK_SIZE - 1], /* 指向任务栈栈顶的指针 */
  76. LED0_RX_PRIO, /* 任务的优先级,必须唯一,数字越低优先级越高 */
  77. LED0_RX_PRIO, /* 任务ID,一般和任务优先级相同 */
  78. (OS_STK *)&LED0_TASK_STK[0], /* 指向任务栈栈底的指针。OS_STK_GROWTH 决定堆栈增长方向 */
  79. LED0_STK_SIZE, /* 任务栈大小 */
  80. (void *)0, /* 一块用户内存区的指针,用于任务控制块TCB的扩展功能
  81. (如任务切换时保存CPU浮点寄存器的数据)。一般不用,填0即可 */
  82. OS_TASK_OPT_STK_CHK | OS_TASK_OPT_STK_CLR); /* 任务选项字 */
  83. OSTaskCreateExt((void (*)(void *))misc_task, (void *)0, (OS_STK *)&misc_task_stk[MISC_TASK_STK_SIZE - 1],
  84. (INT8U)MISC_PRIO, (INT16U)MISC_PRIO, (OS_STK *)&misc_task_stk[0], (INT32U)MISC_TASK_STK_SIZE,
  85. (void *)0, (INT16U)OS_TASK_OPT_STK_CHK | OS_TASK_OPT_STK_CLR | OS_TASK_OPT_SAVE_FP);
  86. // OSTaskCreateExt((void (*)(void *))led1_task, /* 启动任务函数指针 */
  87. // (void *)0, /* 传递给任务的参数 */
  88. // (OS_STK *)&LED1_TASK_STK[LED1_STK_SIZE - 1], /* 指向任务栈栈顶的指针 */
  89. // LED1_RX_PRIO, /* 任务的优先级,必须唯一,数字越低优先级越高 */
  90. // LED1_RX_PRIO, /* 任务ID,一般和任务优先级相同 */
  91. // (OS_STK *)&LED1_TASK_STK[0], /* 指向任务栈栈底的指针。OS_STK_GROWTH
  92. // 决定堆栈增长方向 */ LED1_STK_SIZE, /* 任务栈大小 */ (void *)0, /*
  93. // 一块用户内存区的指针,用于任务控制块TCB的扩展功能
  94. // (如任务切换时保存CPU浮点寄存器的数据)。一般不用,填0即可 */
  95. // OS_TASK_OPT_STK_CHK | OS_TASK_OPT_STK_CLR); /* 任务选项字 */
  96. OSTaskCreateExt((void (*)(void *))dm9161_task, (void *)0, (OS_STK *)&net_task_stk[NET_TASK_STK_SIZE - 1],
  97. (INT8U)NET_PRIO, (INT16U)NET_PRIO, (OS_STK *)&net_task_stk[0], (INT32U)NET_TASK_STK_SIZE, (void *)0,
  98. (INT16U)OS_TASK_OPT_STK_CHK | OS_TASK_OPT_STK_CLR | OS_TASK_OPT_SAVE_FP);
  99. }
  100. void misc_task(void)
  101. {
  102. while (1)
  103. {
  104. // LED_RUN_TOGGLE;
  105. OSTimeDly(500);
  106. LED3_RUN_TOGGLE;
  107. };
  108. }