回头看看 血氧鼠标

昨晚听师兄讲新项目是怎么开展的。

1需求分析转化

鼠标功能(鼠标芯片)

血氧功能(血氧模块)

mcu功能(采集存储数据)

usb功能(有线和无线)

2开始工程

(1)芯片选型:要用多少接口,内部资源要多大,低功耗用L型的

(2)工程建立(加外设,初始化)

(3)模块初始化:设置功能函数,需要怎么使用资源。

(4)功能逻辑实现:要一个个外设开始调试(这个过程会反复验证)

3实现功能

一个个功能实现后,做整体测试。

二 师兄让我一段段解释代码

int main(void)
{
u8 t;
// SystemInit();
usb_port_set(0); //USB?è???a
delay_init(72); //?óê±3?ê??ˉ
KEY_Init() ;
NVIC_Configuration();
uart_init(115200);
SPI_Flash_Init();
if(SPI_FLASH_TYPE!=W25Q64);// Error!"); //?ì2a′í?ó
else //SPI FLASH ?y3£
{
Mass_Memory_Size[0]=2046*4096;//1024*1024*8-4*1024;//oó4k×??úó?óú′?·?êy?Y
Mass_Block_Size[0] =512;//òò?a?ò???úInità???éè??á?SD?¨μ?2ù×÷×??ú?a512??,?ùò??aà?ò??¨ê?512??×??ú.
Mass_Block_Count[0]=Mass_Memory_Size[0]/Mass_Block_Size[0];
}
USB_Interrupts_Config();
Set_USBClock();
USB_Init();
while((bDeviceState != CONFIGURED));//μè′yUSB???ù3é1|.
LED_Init(); //LED???ú3?ê??ˉ
Adc_Init(); //ADC3?ê??ˉ
PS2_Init();
TIM3_Int_Init(24, 7199);
time_flag = 0;
// printf("3?ê??ˉ\r\n");//
do
{
t = Init_Mouse();
#ifdef Debug
if(t)
printf("ERROR_CODE:%d\r\n", t);
else printf("êó±ê3?ê??ˉ3é1|\r\n");
#endif
}
while(t);
TIM_Cmd(TIM3, DISABLE);
SPI_Flash_Read(buffer_out,SAVE_FLASH_ADDR ,8) ;
if(buffer_out[1]==0xff && buffer_out[2]==0xff && buffer_out[3]==0xff && buffer_out[4]==0xff && buffer_out[5]==0xff && buffer_out[6]==0xff)
{
buffer_out[1] = 81;
buffer_out[2] = 58;
buffer_out[3] = 23;
buffer_out[4] = 86;
buffer_out[5] = 0;
buffer_out[6] = 50;
SPI_Flash_Write(buffer_out,SAVE_FLASH_ADDR ,8) ;
}
while (1)
{
if ((PS2_Status & 0x80) && (bDeviceState == CONFIGURED))//μ?μ?á?ò?′?êy?Y
{
if(PS2_DATA_BUF[0]==0x07)//èy???ü°′??
{
Delay(0xFFFFF);
PS2_DATA_BUF[0] = 0;
USB_To_PC_Send_Data(ENDP2, PS2_DATA_BUF, 4);
Delay(0xFFFFF);
bDeviceState = UNCONNECTED;
key_state ++;
if(key_state == 2)key_state =0;
usb_port_set(0);//USB?è???a
delay_ms(500);
USB_Init();
Delay(0xFFFF);
while((bDeviceState != CONFIGURED));//μè′yUSB???ù3é1|
PS2_En_Data_Report();//ê1?üêy?Y±¨??
}
else
{
USB_To_PC_Send_Data(ENDP2, PS2_DATA_BUF, 4);
PS2_En_Data_Report();//ê1?üêy?Y±¨??
}
PS2_Status = MOUSE;
#ifdef DebugPS2
printf("PS2_DATA_BUF[0]%d\r\n", PS2_DATA_BUF[0]);
printf("PS2_DATA_BUF[1]%d\r\n", PS2_DATA_BUF[1]);
printf("PS2_DATA_BUF[2]%d\r\n", PS2_DATA_BUF[2]);
printf("PS2_DATA_BUF[3]%d\r\n", PS2_DATA_BUF[3]);
#endif
}
// use_flag=0;
SaO2process();
// use_flag=1;
if ((data_valid == 1) && (bDeviceState == CONFIGURED))
{
if(heart_rate>heart_rate1) 
{
if((heart_rate-heart_rate1)>=8)heart_rate_out=heart_rate1+8; 
else heart_rate_out=heart_rate; 
}
else
{
if((heart_rate1-heart_rate)>=8)heart_rate_out=heart_rate1-(heart_rate1-heart_rate)/2; 
   else heart_rate_out=heart_rate;


heart_rate1=heart_rate_out;
buffer_in[0] = 1;
buffer_in[1] = heart_rate_out;
buffer_in[2] = SaO2;
USB_To_PC_Send_Data(ENDP1, buffer_in, 8);
//printf("PS2_DATA_BUF[3]%d\r\n", SaO2);
data_valid = 0;
no_finger = 0;
}
else if((no_finger == 1) && (bDeviceState == CONFIGURED))
{
buffer_in[0] = 1;
buffer_in[1] = text_1;
buffer_in[2] = text_2;
USB_To_PC_Send_Data(ENDP1, buffer_in, 8);
//printf("PS2_DATA_BUF[3]%d\r\n", SaO2);
no_finger = 0;
data_valid = 0;
heart_rate1=80;
}
}

发现问题:

1  c语法:参数定义,解读功能函数,语法格式,函数调用。

2  逻辑:程序框图 ,功能实现逻辑。

3  自己做的速度:代码速度和准确率,移植,验证,调试错误。

解决办法:

1 c语法规范

2 做好外设初始化(熟悉手册)

3 积累逻辑力(多看新项目代码,多代码练习)

给的建议:

1别依赖别人帮忙解决问题

2推到历程自己重新做一次

3熟能生巧

4思路要明确

时间: 2024-09-30 08:02:25

回头看看 血氧鼠标的相关文章

惊帆心率血氧模块介绍

应用背景:①中老年心脑血管疾病预防:<中国心血管病报告 2017>数据显示,我国心血管病患病人数已达 2.9 亿.目前,心脑血管病死亡占城乡 0012 居民总死亡原因的首位,农村为45.01%,城市为42.61%.老年人是心脑血管病的主要发病体,老年人患心 脑血管病的几率较高,是普通人群的3.2倍,并且这个年龄段正在呈现年轻化趋势. ②白领亚健康监测:由于压力过大.不健康饮食.缺乏运动.睡眠不足等原因,亚健康问题越来越严峻,也引起人们 的高度重视.未来与健康相关的民生产业将迎来更加快速的发展.

盘点中国电子展上值得一看智能硬件

盘点中国电子展上值得一看智能硬件 11月11日,正值光棍节!一年一度中国电子展选在这一天举办,是要用高科技排解单身汪们内心的寂寞?记者花了一个下午的时间寻找其中最有看点的产品,倒也的确忘记了今昔是何年. 家居类舜合智能家具 对,您看得没错,是智能家具而非智能家居.当大家都还在“创造”智能家居的时候,这家公司却做起了传统家具的智能化,记者在现场看见有打开抽屉便能自动打开内置LED灯的床头柜:有集成了hifi音响与空气净化器的电视柜,现场工作人员表示:如今电视做得越来越薄,音质将不可避免地变差,因此

ANT+ 之【心率传感器设计】【下】

好久不见!!最近的几个月发生了不少事情,导致精力极度分散,自己todolist上各个项目的优先级不停地被调整,博客的事情就被暂时搁置了下来,特别是__AW君__的出现,让自己突然有了一种说不出来的感觉……唔,果然love is blind没错,所幸自己毕竟是一个天生乐观的人,接下来的剧情我会用心去体验的~ 让我们永远相信美好的事情即将发生吧! /****************************************************************************

生物醫學大數據:現狀與展望

大數據 (big data) 是指由於容量太大和過於複雜,無法在一定時間內用常規軟體對其內容進行抓取.管理.存儲.檢索.共享.傳輸和分析的數據集. 大數據具有「4V」特徵:①數據容量 (Volume) 大,常常在 PB(1 PB=250 B)級以上:②數據種類 (Variety) 多,常常具有不同的數據類型(結構化.半結構化和非結構化)和數據來源:③產生和更新速度 (Velocity) 快(如實時數據流),時效性要求高:④科學價值 (Value) 大,儘管利用密度低,卻常常蘊藏著新知識或具有重要

chapter1.3.2

1.3.2 ESHSN的应用 具有ESH能力的ESHSN可以在与其他免许可网络交叉的环境中持续地执行监控和监视任务,如WIFI热点和蓝牙.因此,ESH能力可以显著提高WSNs在不同现实生活中的适用性. 1.3.2.1 智能城市应用 新兴智能城市需要先进的集成了实时监控系统的传感器节点,包括交通系统和电网,以高效地管理城市资源并妥善处理.然而,因为由密集的建筑物带来的复杂传播环境,使得ISM频谱的无线信道条件十分苛刻和反常.另一方面,即使在人口秘密的城市,仍有大部分的授权频谱未得到充分利用,尤其在

运动社交或将成为“反科技”先锋

2014年,人类开始关注手机的使用时间,开始担心手机会影响朋友间的感情,更会影响身体健康,一些科技调查表明,长时间使用手机会让颈椎承受更大的压力,也会造成视力下降,同时,会引起头晕.耳鸣等肾虚症状,最严重者可致癌.这些研究基于调查事实并无不妥之处,只是真正致癌的原因不是手机,而是因用户过于迷恋手机和电子设备而疏于体育运动导致的,最终的结果就是人民体质整体下降,而且把罪魁祸首归于手机或其他电子设备. 于是,一场浩大的"反科技"运动正在全世界范围内展开,号召人们把手机扔到下水道里,号召人们

调节神经美容 女人裸睡10好处

调节神经美容 女人裸睡10好处   裸睡可以消除腹部内脏神经系统的紧张状态,促进血液循环,加速新陈代谢.有利于神经化学传导的调节,增强适应和免疫能力,治疗紧张性疾病,减轻因紧张性引起的慢性便秘.慢性腹泻.痔疮症状. 好处一:调节神经 人在裸睡时,身体外部自由畅通,对神经系统也自然起到调节作用.这不光是有利于增强人体的适应和免疫能力,同时也有利于消除疲劳,放松肢体. 好处二:美容 没有了衣服的隔绝,裸露的皮肤能够吸收更多养分,促进新陈代谢,加强皮脂腺和汗腺的分泌,有利皮脂排泄和再生,皮肤有一种通透

BlueMix与商业智能BI(智慧医疗场景)

开篇:前言 智慧医疗英文简称WIT120,是最近兴起的专有医疗名词,通过打造健康档案区域医疗信息平台,利用最先进的物联网技术,实现患者与医务人员.医疗机构.医疗设备之间的互动,逐步达到信息化. 在这个过程中,医疗设备所产生的数据将会是非常庞大的,我们常见的包括血压.血氧数据,体温.流量.鼾声.心率.通气.BMP信息等,除此以外,某些设备自身的信息量也非常重要,包括压力.开关机时间.延时时间.断电报警.模式.设备ID等,这些信息通过物联网方式(当然也有其他方式)传输到数据中心,经由大数据分析平台最

fMRI数据分析处理原理及方法

来源: 整理文件的时候翻到的,来源已经找不到了囧感觉写得还是不错,贴在这里保存. 近年来,血氧水平依赖性磁共振脑功能成像(Blood oxygenation level-dependent functional magnetic resonance imaging, BOLD-fMRI)技术得到极快的发展,除了与扫描硬件.扫描技术的进步有关外,更得力于以图形图像等计算机科学为核心的相关学科的支持:图像数据的后处理技术成为fMRI中的关键环节 一.功能图像数据的性质 功能磁共振数据包括解剖(结构)