久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费
標題:
發個STM32F103單片機8任務RTX例程,帶Proteus仿真
[打印本頁]
作者:
ZHAOBAO511
時間:
2024-9-13 10:55
標題:
發個STM32F103單片機8任務RTX例程,帶Proteus仿真
909096.png
(73.7 KB, 下載次數: 7)
下載附件
2024-9-13 10:54 上傳
單片機源程序如下:
#include "includes.h" /* 底層硬件驅動 */
#include "usart.h"
/*
**********************************************************************************************************
函數聲明
**********************************************************************************************************
*/
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]; /* 任務棧 */
static uint64_t AppTaskStartStk[512/8]; /* 任務棧 */
/* 任務句柄 */
OS_TID HandleTaskLED = NULL;
/* 任務句柄 */
OS_TID HandleTaskLED1 = NULL;
static uint64_t AppTaskLED1Stk[256/8]; /* 任務棧 */
/* 任務句柄 */
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;
/*
*********************************************************************************************************
* 函 數 名: main
* 功能說明: 標準 c 程序入口。
* 形 參: 無
* 返 回 值: 無
*********************************************************************************************************
*/
int main (void)
{
/* 初始化外設 */
delay_init(); //延時函數初始化
LED_Init(); //初始化與LED連接的硬件接口
NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);// 設置中斷優先級分組2
uart_init(9600); //串口初始化為9600
/* 創建啟動任務 */
os_sys_init_user (AppTaskStart, /* 任務函數 */
1, /* 任務優先級 */
&AppTaskStartStk, /* 任務棧 */
sizeof(AppTaskStartStk)); /* 任務棧大小,單位字節數 */
while(1);
}
/*
*********************************************************************************************************
* 函 數 名: AppTaskLED
* 功能說明: LED 閃爍
* 形 參: 無
* 返 回 值: 無
* 優 先 級: 1 (數值越小優先級越低,這個跟 uCOS 相反)
*********************************************************************************************************
*/
__task void AppTaskLED(void)
{
/* 創建信號量計數值是0, 用于任務同步 */
os_sem_init (&semaphore, 0);
while(1)
{
os_dly_wait(50);
os_sem_send(&semaphore);
LED0=~LED0;
os_dly_wait(10);
}
}
/*
*********************************************************************************************************
* 函 數 名: AppTaskLED
* 功能說明: LED 閃爍
* 形 參: 無
* 返 回 值: 無
* 優 先 級: 1 (數值越小優先級越低,這個跟 uCOS 相反)
*********************************************************************************************************
*/
__task void AppTaskLED1(void)//LED1
{
OS_RESULT xResult;
while(1)
{
xResult= os_sem_wait(&semaphore, 20);
switch(xResult)
{
/*無需等待接受到信號量同步信號 */
case OS_R_OK:
//printf("無需等待接受到信號量同步信號\r\n");
LED1=~LED1;
os_dly_wait(10);
break;
/*信號量不可用,usMaxBlockTime等待時間內收到信號量同步信號 */
case OS_R_SEM:
//printf("信號量不可用,usMaxBlockTime等待時間內收到信號量同步信號\r\n");
LED2=~LED2;
os_dly_wait(20);
break;
/*超時 */
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);
}
}
/*
*********************************************************************************************************
* 函 數 名: AppTaskLED
* 功能說明: LED 閃爍
* 形 參: 無
* 返 回 值: 無
* 優 先 級: 1 (數值越小優先級越低,這個跟 uCOS 相反)
*********************************************************************************************************
*/
__task void AppTaskLED2(void)
{
u8 t;
u8 len;
u16 times=0;
while(1)
{
//read_stm32_id();
printf("\r\n您發送的消息為:\r\n");
/*
if(USART_RX_STA&0x8000)
{
len=USART_RX_STA&0x3fff;//得到此次接收到的數據長度
printf("\r\n您發送的消息為:\r\n");
for(t=0;t<len;t++)
{
USART1->DR=USART_RX_BUF[t];
while((USART1->SR&0X40)==0);//等待發送結束
}
printf("\r\n\r\n");//插入換行
USART_RX_STA=0;
}else
{
times++;
if(times%5000==0)
{
printf("\r\nALIENTEK MiniSTM32開發板 串口實驗\r\n");
printf("正點原子@ALIENTEK\r\n\r\n\r\n");
}
if(times%200==0)printf("請輸入數據,以回車鍵結束\r\n");
if(times%30==0)LED0=!LED0;//閃爍LED,提示系統正在運行.
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);
}
}
/*
*********************************************************************************************************
* 函 數 名: AppTaskStart
* 功能說明: 啟動任務,也就是最高優先級任務。
* 形 參: 無
* 返 回 值: 無
* 優 先 級: 2
*********************************************************************************************************
安 富 萊
*/
__task void AppTaskStart(void)
{
AppTaskCreate();
while(1)
{
LED8=~LED8;
os_dly_wait(800);
}
}
/*
*********************************************************************************************************
* 函 數 名: AppTaskCreate
* 功能說明: 創建應用任務
* 形 參: 無
* 返 回 值: 無
*********************************************************************************************************
*/
static void AppTaskCreate (void)
{
HandleTaskLED = os_tsk_create_user(AppTaskLED, /* 任務函數 */
8, /* 任務優先級 *///數字越小,優先級越低和UCOS相反
&AppTaskLEDStk, /* 任務棧 */
sizeof(AppTaskLEDStk)); /* 任務棧大小,單位字節數 */
HandleTaskLED1 = os_tsk_create_user(AppTaskLED1, /* 任務函數 */
2, /* 任務優先級 *///數字越小,優先級越低和UCOS相反
&AppTaskLED1Stk, /* 任務棧 */
sizeof(AppTaskLED1Stk)); /* 任務棧大小,單位字節數 */
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));
}
復制代碼
仿真和程序:
STM32F103_rtx_LED2 (1).7z
(1.04 MB, 下載次數: 19)
2024-9-13 13:00 上傳
點擊文件名下載附件
下載積分: 黑幣 -5
作者:
lkhlkh
時間:
2024-9-29 22:53
感謝樓主分享,學習了!
歡迎光臨 (http://m.zg4o1577.cn/bbs/)
Powered by Discuz! X3.1
主站蜘蛛池模板:
国产精品欧美一区二区三区不卡
|
一级网站
|
国精日本亚洲欧州国产中文久久
|
美女黄频
|
av网址在线播放
|
小早川怜子xxxxaⅴ在线
|
亚洲国产精品视频
|
欧美日韩中文字幕在线
|
日韩性在线
|
青青伊人久久
|
国产精品爱久久久久久久
|
91精品久久久久久综合五月天
|
四虎在线观看
|
亚洲一区二区三区桃乃木香奈
|
久久新
|
欧美成人在线网站
|
毛片日韩
|
欧美日韩国产精品一区二区
|
精品国产一区二区久久
|
日韩欧美在线观看视频网站
|
国产精品不卡一区二区三区
|
色综合久久久
|
国产91在线播放
|
超碰97人人人人人蜜桃
|
天堂资源最新在线
|
日韩电影在线一区
|
亚洲精品乱码久久久久v最新版
|
国产三级一区二区
|
国产精品视频一区二区三区,
|
欧美一级久久
|
国产一区二区三区视频
|
欧美精品片
|
国产在线精品一区二区三区
|
一区二区伦理电影
|
国产成人短视频在线观看
|
久草欧美
|
欧美日韩在线视频一区二区
|
成人免费一级视频
|
日本久久精品视频
|
大香在线伊779
|
91精品一区二区三区久久久久
|