欢迎来到第一文库网! | 帮助中心 第一文库网-每个人都是第一
第一文库网
全部分类
  • 研究报告>
  • 学术论文>
  • 全科教育>
  • 应用文档>
  • 行业资料>
  • 企业管理>
  • 技术资料>
  • 生活休闲>
  • ImageVerifierCode 换一换
    首页 第一文库网 > 资源分类 > DOCX文档下载
    分享到微信 分享到微博 分享到QQ空间

    11(100%开源)蓝牙心率防水运动手环_整机功能代码讲解(1).docx

    • 资源ID:80827       资源大小:1.18MB        全文页数:16页
    • 资源格式: DOCX        下载积分:3金币
    快捷下载 游客一键下载
    账号登录下载
    微信登录下载
    三方登录下载: QQ登录 微博登录
    二维码
    扫码关注公众号登录
    下载资源需要3金币
    邮箱/手机:
    温馨提示:
    快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
    如填写123,账号就是123,密码也是123。
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    加入VIP,免费下载
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    11(100%开源)蓝牙心率防水运动手环_整机功能代码讲解(1).docx

    蓝牙心率防水运动手环整机代码配套资料:https:/www.fengke.club/GeekMart/su_fkZyGYgrp.jsp、后r ± 一 左n幺匕生rTT 右、歹0配套视频:https:/www.fengke.club/GeekMart/su_fTSgUL3y3.jsp整机代码1 软件设计.本节,我们将融合前面的蓝牙收发、三轴记步、电量检测、外部Flash读写、心率检测和Led屏幕显示,完成手环的制作。以上各个部分可以参考前面的章节。首先,看一下我们手环的整个软件主函数流程。开始代码运行后,首先进入初始化,初始化系统时钟、外设和蓝牙。除此之外,还开启了定时中断和GPIO中断。我们的定时中断每10ms触发一次,用于ADC定时采集心率数据,以及定时和时间更新。另外,由于一些原因,主函数中的步数读取、电量检测、心率检测、屏幕显示并不是每一次循环都执行一次。这里的定时中断也作为一个计时功能,步数20秒更新一次,心率模块1分钟打开一次,亮屏无操作,5秒熄灭屏幕。这里的GPIO中断主要是用来切换屏幕显示页面。void my_int_buttonl_handler(void)Touch_release =1; 触摸释放标志从GPIO的中断回调函数中可以看出,每次中断只是把变量Touch_release置1,并没有直接对显示做任何处理,而在定时中断的回调函数中,判断变量Touchjelease的值,从而确定我们是长时间按键,还是短时间按键,来完成相应的处理。在定时器中断函数中,检测到短时间触摸,就打开显示标志位,同时设置显示的页面。关于蓝牙收发部分,我们在蓝牙收发章节的基础上进行了修改,通过手机软件Wolverine BLE发送step获取步数、发送cal获取卡路里、发送heart获取心率值、发送rtc加时间完成手环的时间设置。下面是函数static int gattc_write_cmd_ind_handler(ke_msgjd_t const msgid, struct gattc_write_cmd_indconst *param, ke_task_id_t const destjd, ke_task_id_t const srcjd)的部分代码。switch(attjdx)case CUST1_IDX_INDICATEABLE_VAL:attmdb_att_set_value(param->handle, param->length, (uint8_t*)&(param->value0);memcpy(value_buf,&(param->value),param->length);复制读出的数据至value_buffspi_flash_read_data(dghData, 0x040000,10);读取 flash 中的数据Number_Of_Steps=dghDatal;hr_capture=dghDataO;DataConversion();if(value_bufO ='s')&&(value_bufl = 't')&&(value_buf2 = 'e,)&&(value_buf3=,P')(value_buf0=Steps0+0x30; 返回步伐值value_bufl=Stepsl+0x30;value_buf2=Steps2+0x30;value_buf3=Steps3+0x30;value_buf4=Steps4+0x30;attmdb_att_set_value(custsl_env.shdl+CUSTl_IDX_LONG_VALUE_/AL)/5,(uint8_t*)&(value_buf0);prf_server_send_event(prf_env_struct *)&(custsl_env.con_info), false,(custsl_env.shdl+CUSTl_IDX_LONG_VALUE_VAL);else if(value_bufO ='c,)&&(value_bufl = 'a,)&&(value_buf2 = T)value_buf0=(Calorie0)+0x30; 返回卡路里value_bufl=(Caloriel)+0x30;value_buf2=(Calorie2)+0x30;value_buf3=(Calorie3)+0x30;value_buf4=(Calorie4)+0x30;attmdb_att_set_value(custsl_env.shdl+CUST1DX_L0NG_VALUE_VAL),5,(uint8_t*)&(value_buf0);prf_server_send_event(prf_env_struct *)&(custsl_env.con_info), false,(custsl_env.shdl+CUSTl_IDX_LONG_VALUE_VAL);ys. I 7 else if(value_buf0=,h,)&&(value_bufl=,e')&&(value_buf2 = *a')&&(value_buf3="r')&&(value_buf4 = 't')value_buf0=(Heart_Rate0)+0x30;返同心率值value_bufl=(Heart_Ratel)+0x30;attmdb_att_set_value(custsl_env.shdl+CUSTlDX_LONG_VALUE_VAL),(uint8_t*)&(value_buf0);prf_server_send_event(prf_env_struct *)&(custsl_env.conjnfo), false,(custsl_env.shdl+CUSTl_IDX_LONG_VALUE_VAL);else if(value_bufO ='r')&&(value_bufl = 't')&&(value_buf2 = 'c')dghData6=value_buf3-0x30; 将时间存入 FlashdghData7=value_buf4-0x30;dghData8=value_buf5-0x30;dghData9=value_buf6-0x30;dghData2=value_buf7-0x30;dghData3=value_buf8-0x30;dghData4=value_buf9-0x30;dghData5=value_buf10-0x30;spi_flash_write_data(dghData, 0x040000,10);break;default:break;每当手环收到来自手机软件Wolverine BLE的数据时,首先从Flash中读取步数和心率数据。然后对比接收到字符串。最后发送或设置相应的数据。这里有一点要注意,我们从Flash中读取到的是数据,而通过蓝牙发送的是字符串,就需要将数字转换成字符就如同代码中将一个位的数字加上0x30,换算成该数字对应的ASCII码值。对于发送给手机的卡路里数据,其实是通过三轴步数计算过来的。消耗的卡路里跟步数以及个人的体重等因素呈比例关系,大家可以根据自己的情况修改卡路里与步数之间的系数。void DataConversion(void)( 7 CalorieNum = Number_Of_Steps«2;StepsO = (unsigned char)(Number_Of_Steps/10000);Stepsl = (unsigned char)(Number_Of_Steps%10000/1000);Steps2 = (unsigned char)(Number_Of_Steps%1000/100);Steps3 = (unsigned char)(Number_Of_Steps%100/10);Steps4 = (unsigned char)(Number_Of_Steps%10); Calorie0=0;Caloriel = (unsigned char)(CalorieNum/100000);Calorie2 = (unsigned char)(CalorieNum%100000/10000);Calorie3 = (unsigned char)(CalorieNum%10000/1000);Calorie4 = (unsigned char)(CalorieNum%1000/100);Heart_RateO=(unsigned char)(hr_capture%100/10);Heart_Ratel=(unsigned char)(hr_capture%10);)关于其他部分代码,请参考我们的我整机代码例程。2 实验现象首先打开 SmartSnippetSo图2设置好SmartSnippets之后,点击上图中的Open。(1)点击Connect,连接我们的单片机。(2)点击 Erase,擦除 Flasho图3图6:S1TO fie-01-14 8:A:X: rrnwM C1 .Pwr*Jhetoiai>?x«T9r«.*«rtJe4>9«tr>c««e«3r«r.*ta X>, c««« Mlectw:MOei.i'jM; nu-C d*c«e«s WX«® ca f >: 8 oM y MecM gars x:b Cob 2al»XlSM zt CsXCtOM:UWKec«a»r:rfimmtv flU M 4 M«£«.tarse«:M:M: 1*: aacrj -)»*»oc»"0aU.;3TC M-6S-U 6»;M;I6: >MA.M MMCV 3 MfJMb MM<rr 4MMU.m8;*;8: M«4«M Mf riM«M« NM WW.(3)点击Browse,找到我们工程的.hex文件'y LXM F ,Z“:_ _q i i d一二 H 一-i ill=三三三三三三三=.w 均色:«:3T:(OFCX»-C*-L< O»ir(M!Z1%L4ne-w o«:M:到XI« M OI:»:M::m 91*6-14 Ot: »1:«<:20O tU&-" MilliM!Nt- g«v«: tnc h f JC x - r* :csr*cre4 i 7*t Cr» -1 te CvC«4CCe«»KMa«r«i2rruMx* nu s - »mw.S>: *m:r7 «rwi*teaxwZA;,.“m

    注意事项

    本文(11(100%开源)蓝牙心率防水运动手环_整机功能代码讲解(1).docx)为本站会员(lao****ou)主动上传,第一文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知第一文库网(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

    copyright@ 2008-2022 001doc.com网站版权所有   

    经营许可证编号:宁ICP备2022001085号

    本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有,必要时第一文库网拥有上传用户文档的转载和下载权。第一文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知第一文库网,我们立即给予删除!



    收起
    展开