转:【小作品】STM32无线WIFI视频小车制作剖析(下)
轉載于:http://blog.csdn.net/u012819339/article/details/50654764
?
實體作品請參看優酷視頻。?
若以上鏈接點擊無效請把該鏈接地址復制到瀏覽器地址欄?http://v.youku.com/v_show/id_XODYzODczNzQ4.html
說明:?
該作品為arvik于2014年下半年在學校實驗室做的一個國家級大學生科技創新項目,大概花了兩個多月課余時間完成。?
其實博客早在幾個月前就寫好了,一共3篇,后來發現第一篇丟失。本想補起來,卻沒有時間,且實際作品早已拆開,保留在學校“博物館”,沒辦法重新試驗了,就不補了。
本篇主要是代碼,不多贅述,直接貼關鍵代碼,代碼不詳細解釋了,稍微花點功夫應該能看懂。
軟件部分直接貼代碼講解,main函數如下,創建起始任務
static OS_STK startup_task_stk[STARTUP_TASK_STK_SIZE]; //定義棧int main(void)
{BSP_Init(); OSInit(); OSTaskCreate(Task_LED,(void *)0, &startup_task_stk[STARTUP_TASK_STK_SIZE-1], STARTUP_TASK_PRIO); OSStart(); return 0; } ?
?
在Task_LED任務中:
#include "includes.h"#include "err.h"
#include "lwip/init.h"
#include "etharp.h"
#include "udp.h" #include "tcp.h" #include "httpd.h" #include "stm32f10x.h" #include "OV7725.h" #include "Imag_App.h" #include "usart1.h" #include "SCCB.h" #include "Imag_App.h" OS_STK task_led2_stk[TASK_LED2_STK_SIZE]; OS_STK task_led3_stk[TASK_LED3_STK_SIZE]; extern volatile u8 Frame_Count; extern int UDP_task(); extern struct netif enc28j60; void Task_LED(void *p_arg) { (void)p_arg; OSTaskCreate(Task_LED3,(void *)0, &task_led3_stk[TASK_LED3_STK_SIZE-1], TASK_LED3_PRIO); OSTaskCreate(Task_LED2,(void *)0, &task_led2_stk[TASK_LED2_STK_SIZE-1], TASK_LED2_PRIO); while (1) //TCP定時器 { LED1( ON ); OSTimeDlyHMSM(0, 0,0,250); LED1( OFF); tcp_tmr(); OSTimeDlyHMSM(0, 0,0,250); tcp_tmr(); //每250ms調用一次 } } void Task_LED2(void *p_arg) //arp任務 { (void)p_arg; while(1) { LED2(ON); OSTimeDlyHMSM(0,0,5,0); etharp_tmr(); //每5s調用一次 LED2(OFF); OSTimeDlyHMSM(0,0,5,0); etharp_tmr(); //每5s調用一次 } } extern struct udp_pcb *UdpPcb; extern struct pbuf *p; extern Data OVdata; void Task_LED3(void *p_arg) { (void)p_arg; //攝像頭 SCCB_GPIO_Configuration(); FIFO_GPIO_Configuration(); while(Ov7725_Init() != SUCCESS); VSYNC_Init(); Ov7725_vsync = 0; //LWIP初始化 UDP_task(); OSTimeDlyHMSM(0,0,0,100); //等待其他任務初始化完畢 // p = pbuf_alloc(PBUF_RAW,sizeof(OVdata),PBUF_RAM); // p->payload = (void *)(&OVdata); while(1) { ethernetif_input(&enc28j60); //輪詢是否接收到數據 if( Ov7725_vsync == 2 ) { FIFO_PREPARE; /*FIFO準備*/ Get_imag_and_discor(); /*采集并顯示*/ Ov7725_vsync = 0; Frame_Count++; /*幀計數器加1*/ } LED3(ON); OSTimeDlyHMSM(0,0,0,4); LED3(OFF); } } ?
相關資料閱讀:?
LWIP協議請參看網上老衲五木的 lwip協議詳解?
攝像頭部分代碼請參看野火的PDF教程,畢竟攝像頭是直接用的野火的代碼,同鞋們也可以用正點原子的代碼(開源電子網)或奮斗論壇的代碼,可到相關論壇收集相關資料。?
ucos-ii操作系統網上論壇有不少資料,也可在我的博客(http://blog.csdn.net/u012819339)查找相關內容。
醬紫,就介紹到這兒了。
轉載于:https://www.cnblogs.com/tureno/articles/7173647.html
總結
以上是生活随笔為你收集整理的转:【小作品】STM32无线WIFI视频小车制作剖析(下)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 大前门多少钱啊?
- 下一篇: 2017年微信网名大全