同事買到的光敏模組和以前用的不一樣,他用萬用表量來量去的,看的挺繁瑣。
寫個測試程式,來測試光敏模組的數值和光線的關係。
原子探索者407
見main.c
前幾天,搭了乙個ucos-iii的模板,就在這個模板中做實驗。
全部新加的實現,都搬到了main.c.
// @file \src\test_case\test_photosensitive_sensor\ucos-iii_test_photosensitive_sensor\user\main.c
// @brief 測試讀取光敏模組的ao和do, 在mdk的序列除錯視窗列印出來
// // @note - 實驗環境
// 實驗平台 : 原子探索者f407
// 光敏模組url :
// 光敏模組資料 : 提取碼 : qqtv
//// @note - 使用的cpu資源
// led燈資源 : led0 = pf9, led1 = pf10 (探索者板載led)
// adc模擬量轉數字量輸出 : pf7 (用杜邦線接到引出的io)
// adc開關量輸出 : e5 (調節電位器門限, 可以得到和光線強度對應的門限值, do = 0/1) (用杜邦線接到引出的io)
// 光敏模組的vcc接開發板3.3v引出排針
// 光敏模組的gnd接開發板gnd引出排針
//// @note - 實驗結論
// 光線暗時,從adc讀出的數值大, 約為2000
// 光線亮時, 從adc讀出的數值小, 約為500
// 調節電位器, 可以得到乙個何時的值, 當光線暗到一定值時,使光敏模組的do的開關量發生變化
// // @note - 執行結果
//
/*>> main
>> start_task
??d out = 0 // 這裡是自然光線照射下, do = 0, ao 數值較小
?? ao = 534
??d out = 0
?? ao = 523
??d out = 0
?? ao = 538
??d out = 0
?? ao = 532
??d out = 0
?? ao = 529
??d out = 0
?? ao = 534
??d out = 0
?? ao = 538
??d out = 0
?? ao = 531
??d out = 0
?? ao = 529
??d out = 0
?? ao = 526
??d out = 0
?? ao = 529
??d out = 0
?? ao = 480
??d out = 0
?? ao = 516
??d out = 0
?? ao = 699
??d out = 1 // 這裡是用手捂住光敏電阻時, do = 1, ao 數值變大
?? ao = 917
??d out = 1
?? ao = 1161
??d out = 1
?? ao = 1447
??d out = 0
?? ao = 438
??d out = 0
?? ao = 451
??d out = 0
?? ao = 487
??d out = 0
?? ao = 486
??d out = 0
?? ao = 495
*/#include "sys.h"
#include "delay.h"
#include "usart.h"
#include "led.h"
#include "includes.h"
//任務優先順序
#define start_task_prio 3
//任務堆疊大小
#define start_stk_size 512
//任務控制塊
os_tcb starttasktcb;
//任務堆疊
cpu_stk start_task_stk[start_stk_size];
//任務函式
void start_task(void *p_arg);
// led初始化
void led_init(void);
// 開關量輸入初始化
void switch_input_init(void);
// 光敏模組初始化
void lsens_init(void);
void adc3_init(void);
u32 lsens_get_val(void);
u16 get_adc3(u8 ch);
int main(void)
#define get_val_switch_input() gpio_readinputdatabit(gpioe,gpio_pin_5) //pe5
//開始任務函式
void start_task(void *p_arg)
else if (1 == get_val_switch_input()) else
adcx=lsens_get_val();
printf("光敏 ao = %d\n", adcx); }}
void switch_input_init(void)
void led_init(void)
void lsens_init(void)
void adc3_init(void)
#define lsens_read_times 3 //定義光敏感測器讀取次數,讀這麼多次,然後取平均值
u32 lsens_get_val(void)
temp_val/=lsens_read_times;//得到平均值
return temp_val;
}//獲得adc值
//ch:通道值 0~16 adc_channel_0~adc_channel_16
//返回值:轉換結果
u16 get_adc3(u8 ch)
基於stm32f407建立stm32F427工程
分為三個部分 1.啟動檔案 2.fwilib 包含兩個資料夾inc和src。src裡面是stm32資源的c檔案,inc則是32資源的h檔案 3.user這也是我不太理解的部分 ddbugconfig只包含了用於debug的初始化,則是f4的系統檔案。我是在f407的基礎上改的 總的來說 1.改了晶元...
STM32F407上除錯freeRTOS問題
是在正點原子的阿波羅stm32f429開發板上的例子改來的,他們的編譯沒有問題,我編譯時出現如下問題 定位到出錯的地方,是 再追 configmax syscall interrupt priority 的定義是 define configmax syscall interrupt priority...
STM32F407 驅動外部SRAM
需要驅動的sram型號為is61lv25616al,價效比比51216的高很多 配置cubemx 這幾個時序比較關鍵,可以按照手冊來計算,我用下來這幾個數值比較合適。然後就沒有然後了,生成 就可以用了。檢查sram內容是否正確 uint8 t bsp testextsram void 寫sram p...