亚洲春色中文字幕久久久-三上亚,一吻二脱三床四吻胸,国产真实伦对白视频全集,在线毛片观看,精品成品入口黄网,国产毛aⅴ片久久久,亚洲AV色香蕉一区二区三区老师,萧皇后A级艳片,色情日本视频更新,99久久亚洲精品日本无码
標(biāo)題:
一個(gè)基于STM32網(wǎng)絡(luò)攝像頭視頻推送顯示的項(xiàng)目PCB源程序
[打印本頁(yè)]
作者:
niyongc0
時(shí)間:
2020-4-18 10:34
標(biāo)題:
一個(gè)基于STM32網(wǎng)絡(luò)攝像頭視頻推送顯示的項(xiàng)目PCB源程序
這是一個(gè)基于STM32F103ZET6芯片的視頻推送項(xiàng),該項(xiàng)目已經(jīng)用在了舞臺(tái),視頻監(jiān)控等項(xiàng)目上,是一個(gè)完整的工程。可以把網(wǎng)絡(luò)攝像頭等實(shí)時(shí)視頻推送給大屏、矩陣等高清大屏。
Altium Designer畫的原理圖和PCB圖如下:(51hei附件中可下載工程文件)
51hei.png
(96.92 KB, 下載次數(shù): 48)
下載附件
2020-4-18 14:32 上傳
51hei.png
(81.05 KB, 下載次數(shù): 32)
下載附件
2020-4-18 14:32 上傳
單片機(jī)源程序如下:
#include <main.h>
/************************************************
************************************************/
//任務(wù)優(yōu)先級(jí)
#define START_TASK_PRIO 3
//任務(wù)堆棧大小
#define START_STK_SIZE 128
//任務(wù)控制塊
OS_TCB StartTaskTCB;
//任務(wù)堆棧
CPU_STK START_TASK_STK[START_STK_SIZE];
//任務(wù)函數(shù)
void start_task(void *p_arg);
//TOUCH任務(wù)
//設(shè)置任務(wù)優(yōu)先級(jí)
#define TOUCH_TASK_PRIO 6
//任務(wù)堆棧大小
#define TOUCH_STK_SIZE 128
//任務(wù)控制塊
OS_TCB TouchTaskTCB;
//任務(wù)堆棧
CPU_STK TOUCH_TASK_STK[TOUCH_STK_SIZE];
//touch任務(wù)
void touch_task(void *p_arg);
//LED0任務(wù)
//設(shè)置任務(wù)優(yōu)先級(jí)
#define LED0_TASK_PRIO 8
//任務(wù)堆棧大小
#define LED0_STK_SIZE 128
//任務(wù)控制塊
OS_TCB Led0TaskTCB;
//任務(wù)堆棧
CPU_STK LED0_TASK_STK[LED0_STK_SIZE];
//led0任務(wù)
void led0_task(void *p_arg);
//字庫(kù)更新任務(wù)
//設(shè)置任務(wù)優(yōu)先級(jí)
#define FONTUPDATA_TASK_PRIO 7
//任務(wù)堆棧大小
#define FONTUPDATA_STK_SIZE 512
//任務(wù)控制塊
OS_TCB FontupdataTaskTCB;
//任務(wù)堆棧
CPU_STK FONTUPDATA_TASK_STK[FONTUPDATA_STK_SIZE];
//字庫(kù)更新任務(wù)
void fontupdata_task(void *p_arg);
//EMWINDEMO任務(wù)
//設(shè)置任務(wù)優(yōu)先級(jí)
#define EMWINDEMO_TASK_PRIO 5
//任務(wù)堆棧大小
#define EMWINDEMO_STK_SIZE 2048
//任務(wù)控制塊
OS_TCB EmwindemoTaskTCB;
//任務(wù)堆棧
CPU_STK EMWINDEMO_TASK_STK[EMWINDEMO_STK_SIZE];
//emwindemo_task任務(wù)
void emwindemo_task(void *p_arg);
////////////////////////////////////////////////////////
//看門狗任務(wù)
//設(shè)置任務(wù)優(yōu)先級(jí)
#define DOG_TASK_PRIO 4
//任務(wù)堆棧大小
#define DOG_STK_SIZE 128
//任務(wù)控制塊
OS_TCB DogTaskTCB;
//任務(wù)堆棧
CPU_STK DOG_TASK_STK[DOG_STK_SIZE];
//DOG_task任務(wù)
void dog_task(void *p_arg);
////////////////////////////////////////////////////////
int main(void)
{
OS_ERR err;
CPU_SR_ALLOC();
delay_init(); //延時(shí)函數(shù)初始化
NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2); //設(shè)置NVIC中斷分組2:2位搶占優(yōu)先級(jí),2位響應(yīng)優(yōu)先級(jí)
uart_init(115200); //串口初始化為115200
USART2_Init(36,9600); //初始化串口2為:9600,波特率.
LED_Init(); //LED端口初始化
TFTLCD_Init(); //LCD初始化
KEY_Init(); //按鍵初始化
BEEP_Init(); //初始化蜂鳴器
FSMC_SRAM_Init(); //初始化SRAM
my_mem_init(SRAMIN); //初始化內(nèi)部?jī)?nèi)存池
my_mem_init(SRAMEX); //初始化外部?jī)?nèi)存池
exfuns_init(); //為fatfs文件系統(tǒng)分配內(nèi)存
f_mount(fs[0],"0:",1); //掛載SD卡
f_mount(fs[1],"1:",1); //掛載FLASH
while(font_init()) //初始化字庫(kù)
{
LCD_ShowString(30,70,200,16,16,"Font Error!");
while(SD_Init()) //檢測(cè)SD卡
{
LCD_ShowString(30,90,200,16,16,"SD Card Failed!");
delay_ms(200);
LCD_Fill(30,90,200+30,70+16,WHITE);
delay_ms(200);
}
update_font(30,90,16,"0:"); //如果字庫(kù)不存在就更新字庫(kù)
delay_ms(2000);
LCD_Clear(WHITE); //清屏
break;
}
TP_Init(); //觸摸屏初始化
//IWDG_Init(6,625); //與分頻數(shù)為256,重載值為625,溢出時(shí)間為4s
IWDG_Init(5,625); //與分頻數(shù)為128,重載值為625,溢出時(shí)間為2s
OSInit(&err); //初始化UCOSIII
OS_CRITICAL_ENTER(); //進(jìn)入臨界區(qū)
//創(chuàng)建開始任務(wù)
OSTaskCreate((OS_TCB * )&StartTaskTCB, //任務(wù)控制塊
(CPU_CHAR * )"start task", //任務(wù)名字
(OS_TASK_PTR )start_task, //任務(wù)函數(shù)
(void * )0, //傳遞給任務(wù)函數(shù)的參數(shù)
(OS_PRIO )START_TASK_PRIO, //任務(wù)優(yōu)先級(jí)
(CPU_STK * )&START_TASK_STK[0], //任務(wù)堆棧基地址
(CPU_STK_SIZE)START_STK_SIZE/10, //任務(wù)堆棧深度限位
(CPU_STK_SIZE)START_STK_SIZE, //任務(wù)堆棧大小
(OS_MSG_QTY )0, //任務(wù)內(nèi)部消息隊(duì)列能夠接收的最大消息數(shù)目,為0時(shí)禁止接收消息, 要定義宏OS_CFG_TASK_Q_EN>0,才可以使用這個(gè)內(nèi)部的消息隊(duì)列
(OS_TICK )0, //當(dāng)使能時(shí)間片輪轉(zhuǎn)時(shí)用來設(shè)置任務(wù)的時(shí)間片長(zhǎng)度,為0時(shí)為默認(rèn)長(zhǎng)度,默認(rèn)長(zhǎng)度為時(shí)鐘節(jié)拍除以10 使能時(shí)間片輪轉(zhuǎn)調(diào)度需要將OS_CFG_SCHED_ROUND_ROBIN_EN定義為1
(void * )0, //用戶補(bǔ)充的存儲(chǔ)區(qū)
(OS_OPT )OS_OPT_TASK_STK_CHK|OS_OPT_TASK_STK_CLR, //任務(wù)選項(xiàng) 指定允許檢測(cè)該任務(wù)的堆棧,指定清除該任務(wù)的堆棧
(OS_ERR * )&err); //存放該函數(shù)錯(cuò)誤時(shí)的返回值
OS_CRITICAL_EXIT(); //退出臨界區(qū)
OSStart(&err); //開啟UCOSIII
while(1);
}
//開始任務(wù)函數(shù)
void start_task(void *p_arg)
{
OS_ERR err;
CPU_SR_ALLOC();
p_arg = p_arg;
CPU_Init();
#if OS_CFG_STAT_TASK_EN > 0u
OSStatTaskCPUUsageInit(&err); //統(tǒng)計(jì)任務(wù)
#endif
#ifdef CPU_CFG_INT_DIS_MEAS_EN //如果使能了測(cè)量中斷關(guān)閉時(shí)間
CPU_IntDisMeasMaxCurReset();
#endif
#if OS_CFG_SCHED_ROUND_ROBIN_EN //當(dāng)使用時(shí)間片輪轉(zhuǎn)的時(shí)候
//使能時(shí)間片輪轉(zhuǎn)調(diào)度功能,時(shí)間片長(zhǎng)度為1個(gè)系統(tǒng)時(shí)鐘節(jié)拍,既1*5=5ms
OSSchedRoundRobinCfg(DEF_ENABLED,1,&err);
#endif
OS_CRITICAL_ENTER(); //進(jìn)入臨界區(qū)
//創(chuàng)建定時(shí)器1
OSTmrCreate((OS_TMR *)&tmr1, //定時(shí)器1
(CPU_CHAR *)"tmr1", //定時(shí)器名字
(OS_TICK )8, //8*10=80ms 單次定時(shí)器的設(shè)置值
(OS_TICK ) 0, //如果是單次定時(shí)器該值應(yīng)該被設(shè)置為0
(OS_OPT )OS_OPT_TMR_ONE_SHOT, //單次定時(shí)器
(OS_TMR_CALLBACK_PTR)tmr1_callback,//定時(shí)器1回調(diào)函數(shù)
(void *)0, //參數(shù)為0
(OS_ERR *)&err); //返回的錯(cuò)誤碼
RCC_AHBPeriphClockCmd(RCC_AHBPeriph_CRC,ENABLE);//開啟CRC時(shí)鐘
GUI_Init(); //STemWin初始化
//STemWin Demo任務(wù)
OSTaskCreate((OS_TCB* )&EmwindemoTaskTCB,
(CPU_CHAR* )"Emwindemo task",
(OS_TASK_PTR )emwindemo_task,
(void* )0,
(OS_PRIO )EMWINDEMO_TASK_PRIO,
(CPU_STK* )&EMWINDEMO_TASK_STK[0],
(CPU_STK_SIZE)EMWINDEMO_STK_SIZE/10,
(CPU_STK_SIZE)EMWINDEMO_STK_SIZE,
(OS_MSG_QTY )TASK_Q_NUM, //任務(wù)Msgdis_task需要使用內(nèi)建消息隊(duì)列,消息隊(duì)列長(zhǎng)度為2
(OS_TICK )0,
(void* )0,
(OS_OPT )OS_OPT_TASK_STK_CHK|OS_OPT_TASK_STK_CLR,
(OS_ERR* )&err);
//觸摸屏任務(wù)
OSTaskCreate((OS_TCB* )&TouchTaskTCB,
(CPU_CHAR* )"Touch task",
(OS_TASK_PTR )touch_task,
(void* )0,
(OS_PRIO )TOUCH_TASK_PRIO,
(CPU_STK* )&TOUCH_TASK_STK[0],
(CPU_STK_SIZE)TOUCH_STK_SIZE/10,
(CPU_STK_SIZE)TOUCH_STK_SIZE,
(OS_MSG_QTY )0,
(OS_TICK )0,
(void* )0,
(OS_OPT )OS_OPT_TASK_STK_CHK|OS_OPT_TASK_STK_CLR,
(OS_ERR* )&err);
//LED0任務(wù)
OSTaskCreate((OS_TCB* )&Led0TaskTCB,
(CPU_CHAR* )"Led0 task",
(OS_TASK_PTR )led0_task,
(void* )0,
(OS_PRIO )LED0_TASK_PRIO,
(CPU_STK* )&LED0_TASK_STK[0],
(CPU_STK_SIZE)LED0_STK_SIZE/10,
(CPU_STK_SIZE)LED0_STK_SIZE,
(OS_MSG_QTY )0,
(OS_TICK )0,
(void* )0,
(OS_OPT )OS_OPT_TASK_STK_CHK|OS_OPT_TASK_STK_CLR,
(OS_ERR* )&err);
//字庫(kù)更新任務(wù)
OSTaskCreate((OS_TCB* )&FontupdataTaskTCB,
(CPU_CHAR* )"Fontupdata task",
(OS_TASK_PTR )fontupdata_task,
(void* )0,
(OS_PRIO )FONTUPDATA_TASK_PRIO,
(CPU_STK* )&FONTUPDATA_TASK_STK[0],
(CPU_STK_SIZE)FONTUPDATA_STK_SIZE/10,
(CPU_STK_SIZE)FONTUPDATA_STK_SIZE,
(OS_MSG_QTY )0,
(OS_TICK )0,
(void* )0,
(OS_OPT )OS_OPT_TASK_STK_CHK|OS_OPT_TASK_STK_CLR,
(OS_ERR* )&err);
//看門狗任務(wù)
OSTaskCreate((OS_TCB* )&DogTaskTCB,
(CPU_CHAR* )"dog_task",
(OS_TASK_PTR )dog_task,
(void* )0,
(OS_PRIO )DOG_TASK_PRIO,
(CPU_STK* )&DOG_TASK_STK[0],
(CPU_STK_SIZE)DOG_STK_SIZE/10,
(CPU_STK_SIZE)DOG_STK_SIZE,
(OS_MSG_QTY )0,
(OS_TICK )0,
(void* )0,
(OS_OPT )OS_OPT_TASK_STK_CHK|OS_OPT_TASK_STK_CLR,
(OS_ERR* )&err);
OS_TaskSuspend((OS_TCB*)&StartTaskTCB,&err); //掛起開始任務(wù)
OS_CRITICAL_EXIT(); //退出臨界區(qū)
}
//EMWINDEMO任務(wù)
void emwindemo_task(void *p_arg)
{
GUI_CURSOR_Show();
//更換皮膚
//BUTTON_SetDefaultSkin(BUTTON_SKIN_FLEX); //BUTTON不能換膚,換膚后按鈕就不能再改變顏色了
CHECKBOX_SetDefaultSkin(CHECKBOX_SKIN_FLEX);
DROPDOWN_SetDefaultSkin(DROPDOWN_SKIN_FLEX);
FRAMEWIN_SetDefaultSkin(FRAMEWIN_SKIN_FLEX);
HEADER_SetDefaultSkin(HEADER_SKIN_FLEX);
MENU_SetDefaultSkin(MENU_SKIN_FLEX);
MULTIPAGE_SetDefaultSkin(MULTIPAGE_SKIN_FLEX);
PROGBAR_SetDefaultSkin(PROGBAR_SKIN_FLEX);
RADIO_SetDefaultSkin(RADIO_SKIN_FLEX);
SCROLLBAR_SetDefaultSkin(SCROLLBAR_SKIN_FLEX);
SLIDER_SetDefaultSkin(SLIDER_SKIN_FLEX);
SPINBOX_SetDefaultSkin(SPINBOX_SKIN_FLEX);
WM_SetCreateFlags(WM_CF_MEMDEV);
windows();
while(1)
{
GUI_Delay(10); //GUI_Delay()是emwin自帶的,移植的時(shí)候也是懟OSTimeDly的簡(jiǎn)單封裝!但是GUI_Delay()不單單是延時(shí),他也會(huì)重繪無效化區(qū)域!OSTimeDly是UCOS的延時(shí),肯定是會(huì)引起任務(wù)調(diào)度的
}
}
//字庫(kù)更新任務(wù)
//KEY_UP鍵長(zhǎng)按2s更新字庫(kù)
void fontupdata_task(void *pdata)
{
OS_ERR err;
while(1)
{
if(WK_UP == 1) //KEY_UP鍵按下
{
OSTimeDlyHMSM(0,0,2,0,OS_OPT_TIME_PERIODIC,&err);//延時(shí)2s
if(WK_UP == 1) //還是KEY_UP鍵
{
LCD_Clear(WHITE);
OSSchedLock(&err); //調(diào)度器上鎖
LCD_ShowString(10,50,250,30,16,"Font Updataing,Please Wait...");
update_font(10,70,16,"0:");//更新字庫(kù)
LCD_Clear(WHITE);
POINT_COLOR = RED;
LCD_ShowString(10,50,280,30,16,"Font Updata finshed,Please Restart!");
OSSchedUnlock(&err); //調(diào)度器解鎖
}
}
OSTimeDlyHMSM(0,0,0,10,OS_OPT_TIME_PERIODIC,&err);//延時(shí)10ms
……………………
…………限于本文篇幅 余下代碼請(qǐng)從51黑下載附件…………
復(fù)制代碼
所有資料51hei提供下載:
視頻推送項(xiàng)目.7z
(4.16 MB, 下載次數(shù): 43)
2020-4-18 14:34 上傳
點(diǎn)擊文件名下載附件
下載積分: 黑幣 -5
歡迎光臨 (http://www.denmoz.com/bbs/)
Powered by Discuz! X3.1