久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费
標題:
帶操作系統的stm32的oled溫濕度顯示程序
[打印本頁]
作者:
herui123456
時間:
2021-11-16 11:44
標題:
帶操作系統的stm32的oled溫濕度顯示程序
實驗結果
IMG_20211110_193229.jpg
(2.62 MB, 下載次數: 62)
下載附件
實驗效果
2021-11-16 11:39 上傳
#ifndef _OS_H_
#define _OS_H_
#include "stm32f10x.h"
#include <stdio.h>
typedef signed char os_i8;
typedef signed short os_i16;
typedef signed int os_i32;
typedef signed long os_i64;
typedef unsigned char os_u8;
typedef unsigned short os_u16;
typedef unsigned int os_u32;
typedef unsigned long os_u64;
typedef os_u32 os_stk;
/*******************************OS參數定義*********************************************/
#define OS_APP_MAX 15 //APP數量(1-255,含1個空閑APP,內存使用為N*(10~12)) bytes)
#define OS_APP_CLOCK 1 //APP時間切片,單位:1ms
#define STK_IDLE_SIZE 18 //空閑APP堆棧長度 (內存使用為N*4) bytes)
#define OS_APP_FLAG_MAX 3 //0-255*8(內存占用:N/8(+1) bytes),==0時不使用,不占內存
#define OS_APP_MUTEX_MAX 2 //0-255(內存占用: N bytes) ,==0時不使用,不占內存
#define OS_APP_QUEUE_MAX 2 //0-255 (內存占用:N^2 bytes) ,==0時不使用,不占內存
#define _RAM_ALGO_ 0 //0-rom,1-ram,算法數組保存位置。
#define OSClock_1US (SystemCoreClock/8/1000000) //OS 1us頻率,(stm32f1--72MHz 8分頻 = 9MHz,1us頻率=9)
/**************************************************************************************/
//APP狀態
#define APP_STATE_RUNNING 1
#define APP_STATE_PENDING 2
//系統布爾值
typedef enum
{
OS_FALSE=0,
OS_TRUE,
}os_bool;
//pend方式
#define APP_BLOCK 0
#define APP_UNBLOCK 1
#if ( OS_APP_MAX < 16 )
#if ( _RAM_ALGO_ == 1 )
extern os_u8 BIT_MAP[16];
#else
extern os_u8 const BIT_MAP[16];
#endif
#else
#ifdef _RAM_ALGO_
extern os_u8 const BIT_MAP[256];
#else
extern os_u8 const BIT_MAP[256];
#endif
#endif
//APP控制塊類型定義
typedef struct
{
os_stk *stk_ptr; //APP棧指針 (必須是第一個)
os_u32 delay_clock;//APP延時時間
os_u8 state; //APP狀態
os_u8 prio; //APP優先級
}OS_ACB;
extern OS_ACB os_acb_list[OS_APP_MAX]; //各個APP的ACB,數組方式(標號0-空閑APP,標號1-app_01--標號n-app_n)
extern OS_ACB *os_acb_cur; //當前正在運行的APP
extern OS_ACB *os_acb_rdy; //下個即將運行的APP
//系統變量類型定義
typedef struct
{
os_u32 clock_counter; //系統時鐘節拍累計變量
os_u32 app_clock;//APP時間切片(為系統時鐘節拍倍數,APP持續運行的時間
os_bool print_sta;
os_u8 lock_nesting;//APP切換鎖定層數統計變量
os_u8 int_nesting;//APP中斷層數統計變量
os_u8 app_cur_num; //當前運行態APP的TCB組數標號
os_u8 app_rdy_bit_tbl;
os_u8 app_rdy_grp_bit_tbl;
}OS_SYS;
extern OS_SYS os_sys;//系統變量
//OS提供的打印輸出函數
#define os_printf(fmt, ...) { os_lock();if(os_sys.print_sta==OS_FALSE){ os_sys.print_sta=OS_TRUE;printf( fmt, ##__VA_ARGS__); os_sys.print_sta=OS_FALSE;}os_unlock();}//OS提供的打印輸出函數
//#define os_printf(fmt, ...) { os_lock();printf( fmt, ##__VA_ARGS__);os_unlock();}//OS提供的打印輸出函數
void os_main(void); //系統主函數(主要用來創建APP)
void API_os_core_enter(void); //關閉全局中斷函數(在匯編中)
void API_os_core_exit(void); //打開全局中斷函數(在匯編中)
void os_init(void); //系統初始使化函數
void os_startup(void); //系統啟動函數
void API_os_systick_init(void);
void API_os_systick_handler(void); //系統定時器中斷函數(把此函數放在硬件定時器中斷函數中)
void API_os_systick_on(void);
void API_os_systick_off(void);
void API_os_systick_irq_on(void);
void API_os_systick_irq_off(void);
void API_os_pendsv_init(void);
void os_user_init(void); //用戶代碼初始化函數(用戶的初使化代碼放在此函數中)
void API_os_psp_reset(void); //PSP指針初使化
void os_scheduler(void); //APP調度器
void API_os_sched_pulse(void); //APP環境切換函數
void os_sched_and_switch(void); //APP調度并切換函數
void app_rdy_tbl_set(os_u8 app_num); //就緒列表置位表示 已就緒
void app_rdy_tbl_reset(os_u8 app_num); //就緒列表復位表示 未就緒
void os_app_rdy_num_update(void);//更新下個運行的APP
os_stk* os_app_stk_init(void* app,os_stk *topstkptr); //APP堆棧初使化函數
void app_ide(void); //空閑APP函數體
void os_app_create_idle(void);
//用戶可用API
void os_app_create(void* app,os_stk *topstkptr,os_u8 prio); //APP創建函數
void os_app_pend(os_u8 prio); //掛起優先級為prio的APP
void os_app_resume(os_u8 prio); //恢復優先級為prio的APP
void os_lock(void); //APP切換上鎖函數
void os_unlock(void); //APP切換解鎖函數
os_u32 os_clock_get(void); //獲取系統時鐘節拍數函數
void delay_us(os_u32 us); //微秒延時函數
void delay_ms(os_u32 ms); //毫秒延時函數
void os_delay(os_u32 tick); //APP延時函數
os_bool os_app_flag_pend(os_u8 blk_sta,os_u8 id); //blk_sta=0或APP_BLOCK阻塞,=1或APP_UNBLOCK非阻塞(返回OS_TRUE表示收到POST)
os_bool os_app_mutex_pend(os_u8 blk_sta,os_u8 id); //blk_sta=0阻塞,=1非阻塞(返回OS_TRUE表示收到POST)
os_u8 os_app_queue_pend(os_u8 blk_sta,os_u8 id); //blk_sta=0阻塞(不等于當前id則阻塞),=1非阻塞(返回隊列序號)
void os_app_flag_post(os_u8 id);
void os_app_mutex_post(os_u8 id);
os_bool os_app_queue_post(os_u8 id); //返回OS_TRUE表示發送成功,OS_FALSE表示發送失敗(隊列已滿)
#endif
復制代碼
Keil代碼下載:
硬件的另一種代碼.7z
(199.75 KB, 下載次數: 19)
2021-11-16 22:10 上傳
點擊文件名下載附件
硬件端代碼
下載積分: 黑幣 -5
01.設計文檔.docx
(179.64 KB, 下載次數: 20)
2021-11-16 11:45 上傳
點擊文件名下載附件
上位機設計文檔
下載積分: 黑幣 -5
資料:
http://m.zg4o1577.cn/bbs/dpj-214412-1.html
歡迎光臨 (http://m.zg4o1577.cn/bbs/)
Powered by Discuz! X3.1
主站蜘蛛池模板:
欧美极品在线
|
国产精品suv一区二区
|
欧美国产一区二区
|
国产h视频在线观看
|
国产伦精品一区二区三区免.费
|
在线观看av不卡
|
国产精品偷乱一区二区三区
|
天天舔天天干
|
亚洲另类av
|
在线中文字幕视频
|
久久国产精品99久久人人澡
|
亚洲欧美视频
|
日本中文在线观看
|
日韩精品国产一区
|
久久只有精品
|
成人午夜小视频
|
国产精品久久久一区二区三区
|
韩日av
|
免费观看全黄做爰的视频
|
成人一区在线观看
|
99cao
|
av网站在线看
|
欧美日韩亚洲天堂
|
www4hutv
|
欧美在线视频观看
|
精品视频在线观看免费
|
黄色三级视频网站
|
国产精品久久久久久久成人午夜
|
国产激情视频
|
97视频在线免费观看
|
日韩av一区二区在线观看
|
精品一区二区三区视频
|
官场少妇尤物雪白高耸
|
香蕉综合网
|
男女搞黄网站
|
美女无遮挡网站
|
免费a在线观看
|
蜜桃精品视频
|
日韩免费在线观看视频
|
91精品国产乱码久久久
|
日本黄色免费视频
|