標(biāo)題:
基于STM32和ucos系統(tǒng)的室內(nèi)環(huán)境檢測(cè)源程序
[打印本頁(yè)]
作者:
055441
時(shí)間:
2020-6-10 16:29
標(biāo)題:
基于STM32和ucos系統(tǒng)的室內(nèi)環(huán)境檢測(cè)源程序
本系統(tǒng)是基于STM32F1系列的
電路原理圖如下:
作業(yè)4.PNG
(89.69 KB, 下載次數(shù): 40)
下載附件
2020-6-10 16:27 上傳
源碼在壓縮包里可自取
#include "main.h"
#include "usart.h"
#include "stdio.h"
#include "lcd.h"
#include "GUI.h"
#include "tu.h"
#include "adc.h"
#include "dht11.h"
void BSP_Init(void)
{
ADC_Config();
LED_Config();
BEEP_Config();
Usart1_Config(9600);
LCD_Init();
Paint_Bmp(20,10,64,64,gImage_tu);
Show_Str(30,40,BRRED,RED,"環(huán)境傳感器",16,11);
LCD_Clear(WHITE);
}
#define TASK_PRIO 4 //設(shè)置優(yōu)先級(jí)
#define TASK_STK_SIZE 128 //堆?臻g大小
OS_STK taskstk[TASK_STK_SIZE]; //定義堆?臻g
void TASK_START(void *pdata);
//#define LED_PRIO 9 //設(shè)置優(yōu)先級(jí)
//#define LED_STK_SIZE 64 //堆?臻g大小
//OS_STK ledstk[LED_STK_SIZE]; //定義堆?臻g
//void LED_TASK(void *pdata);
//#define LED_PRIO1 8 //設(shè)置優(yōu)先級(jí)
//#define LED1_STK_SIZE 64 //堆?臻g大小
//OS_STK led1stk[LED1_STK_SIZE]; //定義堆?臻g
//void LED_TASK1(void *pdata);
//#define USART_PRIO 7 //設(shè)置優(yōu)先級(jí)
//#define USART_STK_SIZE 64 //堆?臻g大小
//OS_STK usartstk[USART_STK_SIZE]; //定義堆?臻g
//void USART_TASK(void *pdata);
#define ADC_PRIO 5 //設(shè)置優(yōu)先級(jí)
#define ADC_STK_SIZE 128 //堆?臻g大小
OS_STK adcstk[ADC_STK_SIZE]; //定義堆?臻g
void ADC_TASK(void *pdata);
#define DHT11_PRIO 6 //設(shè)置優(yōu)先級(jí)
#define DHT11_STK_SIZE 128 //堆?臻g大小
OS_STK dht11stk[ADC_STK_SIZE]; //定義堆棧空間
void DHT11_TASK(void *pdata);
/**
* @brief Main program.
* @param None
* @retval None
*/
int main(void)
{
BSP_Init();
//while(1)
{
// BSP_Init();
OSInit(); //初始化ucos-ii
//創(chuàng)建任務(wù)
OSTaskCreate(TASK_START,NULL,&taskstk[TASK_STK_SIZE-1],TASK_PRIO);
OS_CPU_SysTickInit();
OSStart(); //啟動(dòng)多任務(wù)環(huán)境
}
}
void TASK_START(void *pdata)
{
pdata = pdata;
OS_CPU_SR cpu_sr;
while(1)
{
OS_ENTER_CRITICAL(); //進(jìn)入臨界段 --關(guān)中斷
// OSTaskCreate(LED_TASK,NULL,&ledstk[LED_STK_SIZE-1],LED_PRIO);
//OSTaskCreate(USART_TASK,NULL,&usartstk[USART_STK_SIZE-1],USART_PRIO);
OSTaskCreate(ADC_TASK,NULL,&adcstk[ADC_STK_SIZE-1],ADC_PRIO);
// OSTaskCreate(LED_TASK1,NULL,&led1stk[LED1_STK_SIZE-1],LED_PRIO1);
OSTaskCreate(DHT11_TASK,NULL,&dht11stk[DHT11_STK_SIZE-1],DHT11_PRIO);
OS_EXIT_CRITICAL(); //退出臨界段 --開(kāi)中斷
OSTaskSuspend(TASK_PRIO);
}
}
void LED_TASK(void *pdata)
{
pdata = pdata; //防止編譯器報(bào)警告
while(1)
{
LED1_Toggle();
OSTimeDlyHMSM(0,0,0,500);
}
}
void LED_TASK1(void *pdata)
{
pdata = pdata; //防止編譯器報(bào)警告
while(1)
{
LED2_Toggle();
OSTimeDlyHMSM(0,0,0,500);
}
}
void ADC_TASK(void *pdata)
{
u16 ADC_Val;
pdata=pdata;
char displsyData[20]={0};
while(1)
{
ADC_Val=ADC_GetValue();
printf("ADC_Value=%d\r\n",ADC_GetValue());
sprintf(displsyData,"LCD_ADCValue=%d",ADC_Val);
Show_Str(5,20,BRRED,YELLOW,(u8 *)displsyData,16,11);
OSTimeDlyHMSM(0,0,0,500);
}
}
void DHT11_TASK(void *pdata)
{
pdata=pdata;
u8 temp,hum;
char displsyData[20]={0};
char displsyData1[20]={0};
while(1)
{
DHT11_ReadTAndH(&temp,&hum);
printf("temp = %d\r\n,hum=%d\r\n",temp,hum);
if(temp>10) BEEP(1);
sprintf(displsyData,"Temp=%d",temp);
Show_Str(5,50,BRRED,YELLOW,(u8 *)displsyData,16,11);
sprintf(displsyData1,"Hum=%d",hum);
Show_Str(5,80,BRRED,YELLOW,(u8 *)displsyData1,16,11);
OSTimeDlyHMSM(0,0,2,0);
}
}
復(fù)制代碼
全部程序51hei下載地址:
例程.7z
(277.75 KB, 下載次數(shù): 34)
2020-6-11 14:14 上傳
點(diǎn)擊文件名下載附件
下載積分: 黑幣 -5
作者:
51hei團(tuán)團(tuán)
時(shí)間:
2020-6-11 14:19
好資料 樓主你好,壓縮包里面 沒(méi)有仿真工程啊 能分享一下嗎?
作者:
XYB1995
時(shí)間:
2020-6-11 16:17
請(qǐng)問(wèn)樓主,能分享一下你的仿真程序嗎?謝謝
歡迎光臨 (http://www.torrancerestoration.com/bbs/)
Powered by Discuz! X3.1