|
909096.png (73.7 KB, 下載次數(shù): 7)
下載附件
2024-9-13 10:54 上傳
單片機(jī)源程序如下:- #include "includes.h" /* 底層硬件驅(qū)動(dòng) */
- #include "usart.h"
- /*
- **********************************************************************************************************
- 函數(shù)聲明
- **********************************************************************************************************
- */
- static void AppTaskCreate (void);
- __task void AppTaskLED(void);
- __task void AppTaskStart(void);
- /*
- 安 富 萊 電 子
- **********************************************************************************************************
- 變量
- **********************************************************************************************************
- os_sem_init
- os_sem_send
- isr_sem_send
- os_sem_wait
- */
- static uint64_t AppTaskLEDStk[256/8]; /* 任務(wù)棧 */
- static uint64_t AppTaskStartStk[512/8]; /* 任務(wù)棧 */
- /* 任務(wù)句柄 */
- OS_TID HandleTaskLED = NULL;
- /* 任務(wù)句柄 */
- OS_TID HandleTaskLED1 = NULL;
- static uint64_t AppTaskLED1Stk[256/8]; /* 任務(wù)棧 */
- /* 任務(wù)句柄 */
- OS_TID HandleTaskLED2 = NULL;
- static uint64_t AppTaskLED2Stk[256/8];
- OS_TID HandleTaskLED3 = NULL;
- static uint64_t AppTaskLED3Stk[256/8];
- OS_TID HandleTaskLED4 = NULL;
- static uint64_t AppTaskLED4Stk[256/8];
- OS_TID HandleTaskLED5 = NULL;
- static uint64_t AppTaskLED5Stk[256/8];
- OS_TID HandleTaskLED6 = NULL;
- static uint64_t AppTaskLED6Stk[256/8];
- OS_TID HandleTaskLED7 = NULL;
- static uint64_t AppTaskLED7Stk[256/8];
- OS_SEM semaphore;
- /*
- *********************************************************************************************************
- * 函 數(shù) 名: main
- * 功能說明: 標(biāo)準(zhǔn) c 程序入口。
- * 形 參: 無
- * 返 回 值: 無
- *********************************************************************************************************
- */
- int main (void)
- {
- /* 初始化外設(shè) */
- delay_init(); //延時(shí)函數(shù)初始化
- LED_Init(); //初始化與LED連接的硬件接口
- NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);// 設(shè)置中斷優(yōu)先級(jí)分組2
- uart_init(9600); //串口初始化為9600
- /* 創(chuàng)建啟動(dòng)任務(wù) */
- os_sys_init_user (AppTaskStart, /* 任務(wù)函數(shù) */
- 1, /* 任務(wù)優(yōu)先級(jí) */
- &AppTaskStartStk, /* 任務(wù)棧 */
- sizeof(AppTaskStartStk)); /* 任務(wù)棧大小,單位字節(jié)數(shù) */
- while(1);
- }
- /*
- *********************************************************************************************************
- * 函 數(shù) 名: AppTaskLED
- * 功能說明: LED 閃爍
- * 形 參: 無
- * 返 回 值: 無
- * 優(yōu) 先 級(jí): 1 (數(shù)值越小優(yōu)先級(jí)越低,這個(gè)跟 uCOS 相反)
- *********************************************************************************************************
- */
- __task void AppTaskLED(void)
- {
- /* 創(chuàng)建信號(hào)量計(jì)數(shù)值是0, 用于任務(wù)同步 */
- os_sem_init (&semaphore, 0);
- while(1)
- {
- os_dly_wait(50);
- os_sem_send(&semaphore);
- LED0=~LED0;
- os_dly_wait(10);
-
- }
- }
- /*
- *********************************************************************************************************
- * 函 數(shù) 名: AppTaskLED
- * 功能說明: LED 閃爍
- * 形 參: 無
- * 返 回 值: 無
- * 優(yōu) 先 級(jí): 1 (數(shù)值越小優(yōu)先級(jí)越低,這個(gè)跟 uCOS 相反)
- *********************************************************************************************************
- */
- __task void AppTaskLED1(void)//LED1
- {
- OS_RESULT xResult;
- while(1)
- {
- xResult= os_sem_wait(&semaphore, 20);
- switch(xResult)
- {
- /*無需等待接受到信號(hào)量同步信號(hào) */
- case OS_R_OK:
- //printf("無需等待接受到信號(hào)量同步信號(hào)\r\n");
- LED1=~LED1;
- os_dly_wait(10);
- break;
- /*信號(hào)量不可用,usMaxBlockTime等待時(shí)間內(nèi)收到信號(hào)量同步信號(hào) */
- case OS_R_SEM:
- //printf("信號(hào)量不可用,usMaxBlockTime等待時(shí)間內(nèi)收到信號(hào)量同步信號(hào)\r\n");
- LED2=~LED2;
- os_dly_wait(20);
- break;
- /*超時(shí) */
- case OS_R_TMO:
- //bsp_LedToggle(1);
- //bsp_LedToggle(4);
- LED3=~LED3;
- os_dly_wait(30);
- break;
- /*其他值不處理 */
- default:
- //os_dly_wait(100);
- break;
- }
- //os_dly_wait(100);
- }
- }
- /*
- *********************************************************************************************************
- * 函 數(shù) 名: AppTaskLED
- * 功能說明: LED 閃爍
- * 形 參: 無
- * 返 回 值: 無
- * 優(yōu) 先 級(jí): 1 (數(shù)值越小優(yōu)先級(jí)越低,這個(gè)跟 uCOS 相反)
- *********************************************************************************************************
- */
- __task void AppTaskLED2(void)
- {
- u8 t;
- u8 len;
- u16 times=0;
- while(1)
- {
- //read_stm32_id();
-
- printf("\r\n您發(fā)送的消息為:\r\n");
- /*
- if(USART_RX_STA&0x8000)
- {
- len=USART_RX_STA&0x3fff;//得到此次接收到的數(shù)據(jù)長度
- printf("\r\n您發(fā)送的消息為:\r\n");
- for(t=0;t<len;t++)
- {
- USART1->DR=USART_RX_BUF[t];
- while((USART1->SR&0X40)==0);//等待發(fā)送結(jié)束
- }
- printf("\r\n\r\n");//插入換行
- USART_RX_STA=0;
- }else
- {
- times++;
- if(times%5000==0)
- {
- printf("\r\nALIENTEK MiniSTM32開發(fā)板 串口實(shí)驗(yàn)\r\n");
- printf("正點(diǎn)原子@ALIENTEK\r\n\r\n\r\n");
- }
- if(times%200==0)printf("請輸入數(shù)據(jù),以回車鍵結(jié)束\r\n");
- if(times%30==0)LED0=!LED0;//閃爍LED,提示系統(tǒng)正在運(yùn)行.
- delay_ms(10);
- }*/
- os_dly_wait(500);
- }
- }
- __task void AppTaskLED3(void)
- {
- while(1)
- {
- //LED3=~LED3;
- os_dly_wait(30);
- }
- }
- __task void AppTaskLED4(void)
- {
- while(1)
- {
- LED4=~LED4;
- os_dly_wait(40);
- }
- }
- __task void AppTaskLED5(void)
- {
- while(1)
- {
- LED5=~LED5;
- os_dly_wait(50);
- }
- }
- __task void AppTaskLED6(void)
- {
- while(1)
- {
- LED6=~LED6;
- os_dly_wait(60);
- }
- }
- __task void AppTaskLED7(void)
- {
- while(1)
- {
- LED7=~LED7;
- os_dly_wait(70);
- }
- }
- /*
- *********************************************************************************************************
- * 函 數(shù) 名: AppTaskStart
- * 功能說明: 啟動(dòng)任務(wù),也就是最高優(yōu)先級(jí)任務(wù)。
- * 形 參: 無
- * 返 回 值: 無
- * 優(yōu) 先 級(jí): 2
- *********************************************************************************************************
- 安 富 萊
- */
- __task void AppTaskStart(void)
- {
- AppTaskCreate();
- while(1)
- {
- LED8=~LED8;
- os_dly_wait(800);
- }
- }
- /*
- *********************************************************************************************************
- * 函 數(shù) 名: AppTaskCreate
- * 功能說明: 創(chuàng)建應(yīng)用任務(wù)
- * 形 參: 無
- * 返 回 值: 無
- *********************************************************************************************************
- */
- static void AppTaskCreate (void)
- {
- HandleTaskLED = os_tsk_create_user(AppTaskLED, /* 任務(wù)函數(shù) */
- 8, /* 任務(wù)優(yōu)先級(jí) *///數(shù)字越小,優(yōu)先級(jí)越低和UCOS相反
- &AppTaskLEDStk, /* 任務(wù)棧 */
- sizeof(AppTaskLEDStk)); /* 任務(wù)棧大小,單位字節(jié)數(shù) */
- HandleTaskLED1 = os_tsk_create_user(AppTaskLED1, /* 任務(wù)函數(shù) */
- 2, /* 任務(wù)優(yōu)先級(jí) *///數(shù)字越小,優(yōu)先級(jí)越低和UCOS相反
- &AppTaskLED1Stk, /* 任務(wù)棧 */
- sizeof(AppTaskLED1Stk)); /* 任務(wù)棧大小,單位字節(jié)數(shù) */
-
- HandleTaskLED2 = os_tsk_create_user(AppTaskLED2,
- 3,
- &AppTaskLED2Stk,
- sizeof(AppTaskLED2Stk));
-
-
- HandleTaskLED3 = os_tsk_create_user(AppTaskLED3,
- 4,
- &AppTaskLED3Stk,
- sizeof(AppTaskLED3Stk));
- HandleTaskLED4 = os_tsk_create_user(AppTaskLED4,
- 5,
- &AppTaskLED4Stk,
- sizeof(AppTaskLED4Stk));
- HandleTaskLED5 = os_tsk_create_user(AppTaskLED5,
- 6,
- &AppTaskLED5Stk,
- sizeof(AppTaskLED5Stk));
- HandleTaskLED6 = os_tsk_create_user(AppTaskLED6,
- 7,
- &AppTaskLED6Stk,
- sizeof(AppTaskLED6Stk));
- HandleTaskLED7 = os_tsk_create_user(AppTaskLED7,
- 9,
- &AppTaskLED7Stk,
- sizeof(AppTaskLED7Stk));
- }
復(fù)制代碼
仿真和程序:
STM32F103_rtx_LED2 (1).7z
(1.04 MB, 下載次數(shù): 19)
2024-9-13 13:00 上傳
點(diǎn)擊文件名下載附件
下載積分: 黑幣 -5
|
評(píng)分
-
查看全部評(píng)分
|