123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125 |
- /*
- *********************************************************************************************************
- * 函 数 名: main
- * 功能说明: c程序入口
- * 形 参:无
- * 返 回 值: 错误代码(无需处理)
- *********************************************************************************************************
- */
- #include "main.h"
- int main(void)
- {
- #if 0
- /* 打开GOIOI 端口时钟 */
- *(unsigned int *)(0x40023800 + 0x30) |= (1 << 8);
- /* PI10 为输出 */
- *(unsigned int *)(0x40022000 + 0x00) &= ~((0x03) << (2 * 10));
- *(unsigned int *)(0x40022000 + 0x00) |= (1 << (2 * 10));
- /* PI10 输出高电平 */
- *(unsigned int *)(0x40022000 + 0x14) |= (1 << 10);
- /* PI10 输出低电平 */
- *(unsigned int *)(0x40022000 + 0x14) &= ~(1 << 10);
- #elif 0
- bsp_init();
- while (1)
- {
- GPIO_ResetBits(GPIOI, GPIO_Pin_10);
- Delay(0xFFFFFFFF);
- // GPIO_SetBits(GPIOI, GPIO_Pin_10);
- // Delay(0xFFFFFFFF);
- GPIO_ResetBits(GPIOF, GPIO_Pin_7);
- Delay(0xFFFFFF);
- // GPIO_SetBits(GPIOF, GPIO_Pin_7);
- // Delay(0xFFFFFF);
- GPIO_ResetBits(GPIOF, GPIO_Pin_8);
- Delay(0xFFFFFF);
- // GPIO_SetBits(GPIOF, GPIO_Pin_8);
- // Delay(0xFFFFFF);
- GPIO_ResetBits(GPIOC, GPIO_Pin_2);
- Delay(0xFFFFFF);
- // GPIO_SetBits(GPIOC, GPIO_Pin_2);
- // Delay(0xFFFFFF);
- };
- #elif 1
- NVIC_PriorityGroupConfig(NVIC_PriorityGroup_4);
- OSInit();
- bsp_init();
- /* init task */
- /* 创建一个启动任务(也就是主任务)。启动任务会创建所有的应用程序任务 */
- OSTaskCreateExt(init_task, /* 启动任务函数指针 */
- (void *)0, /* 传递给任务的参数 */
- (OS_STK *)&init_task_stk[INIT_STK_SIZE - 1], /* 指向任务栈栈顶的指针 */
- INIT_TASK_PRIO, /* 任务的优先级,必须唯一,数字越低优先级越高 */
- INIT_TASK_PRIO, /* 任务ID,一般和任务优先级相同 */
- (OS_STK *)&init_task_stk[0], /* 指向任务栈栈底的指针。OS_STK_GROWTH 决定堆栈增长方向 */
- INIT_STK_SIZE, /* 任务栈大小 */
- (void *)0, /* 一块用户内存区的指针,用于任务控制块TCB的扩展功能
- (如任务切换时保存CPU浮点寄存器的数据)。一般不用,填0即可 */
- OS_TASK_OPT_STK_CHK | OS_TASK_OPT_STK_CLR); /* 任务选项字 */
- OSStart();
- #endif
- }
- /*!
- \brief init task
- \param[in] pvParameters not used
- \param[out] none
- \retval none
- */
- void init_task(void *pvParameters)
- {
- SysTick_Config(SystemCoreClock / OS_TICKS_PER_SEC);
- /* configure the systick handler priority */
- NVIC_SetPriority(SysTick_IRQn, 0x00U);
- OSTaskCreateExt((void (*)(void *))led_task, /* 启动任务函数指针 */
- (void *)0, /* 传递给任务的参数 */
- (OS_STK *)&LED0_TASK_STK[LED0_STK_SIZE - 1], /* 指向任务栈栈顶的指针 */
- LED0_RX_PRIO, /* 任务的优先级,必须唯一,数字越低优先级越高 */
- LED0_RX_PRIO, /* 任务ID,一般和任务优先级相同 */
- (OS_STK *)&LED0_TASK_STK[0], /* 指向任务栈栈底的指针。OS_STK_GROWTH 决定堆栈增长方向 */
- LED0_STK_SIZE, /* 任务栈大小 */
- (void *)0, /* 一块用户内存区的指针,用于任务控制块TCB的扩展功能
- (如任务切换时保存CPU浮点寄存器的数据)。一般不用,填0即可 */
- OS_TASK_OPT_STK_CHK | OS_TASK_OPT_STK_CLR); /* 任务选项字 */
- OSTaskCreateExt((void (*)(void *))misc_task, (void *)0, (OS_STK *)&misc_task_stk[MISC_TASK_STK_SIZE - 1],
- (INT8U)MISC_PRIO, (INT16U)MISC_PRIO, (OS_STK *)&misc_task_stk[0], (INT32U)MISC_TASK_STK_SIZE,
- (void *)0, (INT16U)OS_TASK_OPT_STK_CHK | OS_TASK_OPT_STK_CLR | OS_TASK_OPT_SAVE_FP);
- // OSTaskCreateExt((void (*)(void *))led1_task, /* 启动任务函数指针 */
- // (void *)0, /* 传递给任务的参数 */
- // (OS_STK *)&LED1_TASK_STK[LED1_STK_SIZE - 1], /* 指向任务栈栈顶的指针 */
- // LED1_RX_PRIO, /* 任务的优先级,必须唯一,数字越低优先级越高 */
- // LED1_RX_PRIO, /* 任务ID,一般和任务优先级相同 */
- // (OS_STK *)&LED1_TASK_STK[0], /* 指向任务栈栈底的指针。OS_STK_GROWTH
- // 决定堆栈增长方向 */ LED1_STK_SIZE, /* 任务栈大小 */ (void *)0, /*
- // 一块用户内存区的指针,用于任务控制块TCB的扩展功能
- // (如任务切换时保存CPU浮点寄存器的数据)。一般不用,填0即可 */
- // OS_TASK_OPT_STK_CHK | OS_TASK_OPT_STK_CLR); /* 任务选项字 */
- OSTaskCreateExt((void (*)(void *))dm9161_task, (void *)0, (OS_STK *)&net_task_stk[NET_TASK_STK_SIZE - 1],
- (INT8U)NET_PRIO, (INT16U)NET_PRIO, (OS_STK *)&net_task_stk[0], (INT32U)NET_TASK_STK_SIZE, (void *)0,
- (INT16U)OS_TASK_OPT_STK_CHK | OS_TASK_OPT_STK_CLR | OS_TASK_OPT_SAVE_FP);
- }
- void misc_task(void)
- {
- while (1)
- {
- // LED_RUN_TOGGLE;
- OSTimeDly(500);
- LED3_RUN_TOGGLE;
- };
- }
|