官术网_书友最值得收藏!

5.3 main()函數(shù)

main()函數(shù)和任務(wù)代碼變動不大,具體參見代碼清單5-12,有變動的部分代碼已加粗。

代碼清單5-12 main()函數(shù)

1 int main(void)
 2 {
 3     OS_ERR err;
 4 
 5     /* 關(guān)閉中斷 */
 6     CPU_IntDis();
 7 
 8     /* 配置SysTick每10ms中斷一次 */
 9     OS_CPU_SysTickInit (10);
10 
11     /* 初始化相關(guān)的全局變量 */
12     OSInit(&err);(1)
13 
14     /* 創(chuàng)建任務(wù) */
15     OSTaskCreate ((OS_TCB*)      &Task1TCB,
16                   (OS_TASK_PTR ) Task1,
17                   (void *)       0,
18                   (CPU_STK*)     &Task1Stk[0],
19                   (CPU_STK_SIZE) TASK1_STK_SIZE,
20                   (OS_ERR *)     &err);
21 
22     OSTaskCreate ((OS_TCB*)      &Task2TCB,
23                   (OS_TASK_PTR ) Task2,
24                   (void *)       0,
25                   (CPU_STK*)     &Task2Stk[0],
26                   (CPU_STK_SIZE) TASK2_STK_SIZE,
27                   (OS_ERR *)     &err);
28 
29     /* 將任務(wù)加入就緒列表 */
30     OSRdyList[0].HeadPtr = &Task1TCB;
31     OSRdyList[1].HeadPtr = &Task2TCB;
32 
33     /* 啟動操作系統(tǒng),將不再返回 */
34     OSStart(&err);
35 }
36 
37 /* 任務(wù)1 */
38 void Task1( void *p_arg )
39 {
40     for ( ;; ) {
41         flag1 = 1;
42         //delay( 100 );
43         OSTimeDly(2);(2)
44         flag1 = 0;
45         //delay( 100 );
46         OSTimeDly(2);
47 
48         /* 任務(wù)切換,這里是手動切換 */
49         //OSSched();
50     }
51 }
52 
53 /* 任務(wù)2 */
54 void Task2( void *p_arg )
55 {
56     for ( ;; ) {
57         flag2 = 1;
58         //delay( 100 );
59         OSTimeDly(2);(3)
60         flag2 = 0;
61         //delay( 100 );
62         OSTimeDly(2);
63 
64         /* 任務(wù)切換,這里是手動切換 */
65         //OSSched();
66     }
67 }

代碼清單5-12(1):空閑任務(wù)初始化函數(shù)在OSInit()中調(diào)用,在系統(tǒng)啟動之前創(chuàng)建好空閑任務(wù)。

代碼清單5-12(2)(3):延時函數(shù)均替代為阻塞延時,延時時間均為2個SysTick中斷周期,即20ms。

主站蜘蛛池模板: 宁安市| 密山市| 阿拉善右旗| 墨竹工卡县| 阿坝县| 南投县| 沧州市| 汝城县| 锦屏县| 天峻县| 万安县| 安西县| 清徐县| 齐齐哈尔市| 石门县| 成都市| 嘉禾县| 新安县| 延寿县| 天津市| 松阳县| 巍山| 嵊州市| 扎鲁特旗| 松溪县| 河津市| 秀山| 丰台区| 宁陕县| 大渡口区| 舞阳县| 满城县| 五指山市| 平和县| 都江堰市| 寿宁县| 永康市| 石屏县| 闸北区| 和平县| 长岭县|