欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136
標題:
基于stm32f407zet6的電子手環程序 0.96OLED MPU6050 MAX30102 藍牙
[打印本頁]
作者:
1748493182
時間:
2021-11-16 14:56
標題:
基于stm32f407zet6的電子手環程序 0.96OLED MPU6050 MAX30102 藍牙
0.96OLED MPU6050 MAX30102 藍牙
單片機源程序如下:
#include "sys.h"
#include "delay.h"
#include "usart.h"
#include "tim.h"
#include "pwm.h"
#include "spi.h"
#include "iic.h"
#include "led.h"
#include "wk_up.h"
#include "key.h"
#include "rtc.h"
#include "usart2.h"
#include "24cxx.h"
#include "w25qxx.h"
#include "dht11.h"
#include "algorithm.h"
#include "max30102.h"
#include "max30102test.h"
#include "mpu6050.h"
#include "inv_mpu.h"
#include "inv_mpu_dmp_motion_driver.h"
#include "ANO_TC.h"
#include "draw_api.h"
#include "featureset.h"
#include "test.h"
/*******************************************************************************
STM32階段項目:電子手環
2021/10/27 完成部分底層驅動,移植OLED圖形庫,用于后面0.96寸屏幕的顯示,編譯通過。
2021/10/28 增加RTC,DHT11,WK_UP休眠喚醒(有BUG,按一下會觸發多次)。
2021/10/29 完成MPU6050的移植,DMP移植,匿名上位機通訊(V2.6版本),其他版本的上
位機不不可用。
2021/10/30 完成OLED時鐘顯示界面,OLED圖形庫增加電量顯示圖標,信號顯示圖標,底層
驅動基本完成。
2021/10/31 完成屏幕顯示的雛形,心率和設置功能未添加(后續完善),很多細節未處理
MPU6050必須要喊平穩才能校準。(后續增加MPU6050上傳至更高版本的匿名上
位機),原因:高版本的上位機擁有更好看的圖形化界面。
2021/11/1 完善時鐘,計步,姿態邏輯模塊功能。移植MAX30102(測試未通過,初始化無
反應),之前用輪詢掃描按鍵,系統響應太慢,修改成外部中斷。
計劃:增加藍牙設置時間,亮度,定時息屏,抬起喚醒(屏幕由滅到亮,實際
還沒有休眠),鬧鐘功能。
2021/11/2 完善藍牙設置時間,亮度,息屏,鬧鐘,休眠,抬起喚醒,跟隨旋轉。
待完善:心率,按鍵設置功能。
按鍵設置功能:亮度、時間設置已完成。
待完善:日期設置,心率。
2021/11/3 完成設置功能,修復菜單循環顯示出現亂碼問題。
待完善:心率檢測。
2021/11/4 心率驅動完成,邏輯實現完成,項目基本完成。
*****************************************************************************/
/*******************************************************************************
實現功能:OLED顯示,按鍵切換功能,抬起喚醒,自適應切換屏幕,心率血氧測量,計步功能。
實現過程:用STM43F407ZET6作為主控芯片,采用外部中斷檢測按鍵,用來切換功能,利用RTC
得到當前時間和日期,利用MPU6050姿態傳感器采集數據,經過姿態融合結算出歐
拉角,分析歐拉角的值得到當前的狀態,判斷不同狀態要進行不同的處理,驅動
MAX30102得到心率血氧值,使用UART2連接藍牙與手機通訊,自定義手機的發送格式
利用串口中斷接收手機發過來的指令,在中斷服務函數中判斷,并執行相應的功能。
*******************************************************************************/
#define ANO_OK 0 //開啟上傳功能則將此宏改為1
extern void OLED_ShowBatteryRatio(u8 x,u8 y,u8 ratio);
extern void OLED_ShowSignal(u8 x,u8 y,u8 strength);
//函數聲明
void MySystemInit(void); //各種外設的初始化
void TestTask(void); //測試函數,測試使用
/*********************************主函數***************************************/
int main(void)
{
NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);//設置系統中斷優先級分組2
MySystemInit();//系統初始化
while(1)
{
MainShow();
}
}
//各種接口初始化
void MySystemInit(void)
{
delay_init(168); //初始化延時函數
uart_init(115200); //串口初始化
USART2_Init(9600); //藍牙串口初始化
LED_Init(); //LED初始化
EXTI_InIt(); //按鍵中斷初始化
WK_UP_Init(); //開機時按下KEY2按鍵,非正常開機,直接進入休眠狀態
InitGraph(); //OLED初始化
OLED_ON();
ClearScreen();
DrawBitmap(0,0,Panda,128,64);//顯示開機畫面
UpdateScreen();
Tim6_Init(100-1,840-1); //為圖形庫提供1ms時鐘節拍
// W25QXX_Init(); //Flash初始化
// AT24CXX_Init(); //EEPROM初始化
maxim_max30102_init();
MPU_Init(); //初始化MPU6050
while(mpu_dmp_init()) //初始化MPU DMP
{
LED2 =! LED2; //若DMP初始化不成功,則LED2閃爍 每隔200ms
delay_ms(200);
}
ClearScreen();//清屏
printf("system init ok \r\n");
}
/*************************************************END*******************************************************/
復制代碼
Keil代碼下載:
最終版.7z
(431.47 KB, 下載次數: 233)
2021-11-16 21:47 上傳
點擊文件名下載附件
下載積分: 黑幣 -5
作者:
Resign不茍存
時間:
2021-11-20 16:09
感謝樓主的分享,最近剛開始接觸到MAX30102,苦于店鋪給的資料太雜,寫的頭都要禿了,感謝感謝
歡迎光臨 (http://m.raoushi.com/bbs/)
Powered by Discuz! X3.1