久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開始

搜索
查看: 6303|回復(fù): 6
收起左側(cè)

51單片機(jī)代碼如何改寫成stm32?求高手指教

[復(fù)制鏈接]
ID:553796 發(fā)表于 2019-6-3 15:49 | 顯示全部樓層 |閱讀模式
我用的是德飛萊 七星蟲系列的stm32f103主板,型號(hào):尼莫M3S,想要連接心率傳感器,但是這款傳感器自帶的調(diào)試程序是51單片機(jī)的,想改成arm的程序。自帶程序中用51模擬了IIC接口,stm32主板自帶IIC接口,我現(xiàn)在要把原51代碼轉(zhuǎn)換成arm代碼,望各位指教
IMG_1116.JPG

stm32主板

stm32主板

心率傳感器

心率傳感器
IMG_1117.JPG

單片機(jī)源程序如下:
  1. //-------------------------------------------------------------------------------------//
  2. //程序名:          MAX30100測(cè)試程序                  
  3. //版本:            V1.0                        
  4. //功能:            測(cè)試MAX30100的ID及溫度部分功能。
  5. //-------------------------------------------------------------------------------------//
  6. //RCWL-0530模塊與51接口連接:
  7. // 1:VCC   --〉   1.8V-5.5V電源
  8. // 2:SCL   --〉   P3.5
  9. // 3:SDA   --〉   P3.7
  10. // 4:INT   --〉   NC
  11. // 5:IRD   --〉   NC
  12. // 6:RD    --〉   NC
  13. // 7:GND   --〉   地
  14. //-------------------------------------------------------------------------------------//
  15. # include <reg52.h>
  16. # include <stdio.h>
  17. # include <intrins.h>
  18. //定義IIC接口
  19. sbit IIC_SCL    =P3^5;     //IIC的SCL
  20. sbit IIC_SDA    =P3^7;     //IIC的SDA
  21. bit  IIC_ACK;              //IIC的ACK
  22. int  rda;                  //IIC讀出
  23. //-------------------------------------------------------------------------------------//
  24. //函數(shù):    delayms()
  25. //功能:    延時(shí)程序
  26. //-------------------------------------------------------------------------------------//
  27. void delayms(unsigned int ms)
  28. {
  29.         unsigned char i=100,j;
  30.         for(;ms;ms--)
  31.         {
  32.                 while(--i)
  33.                 {
  34.                         j=10;
  35.                         while(--j);
  36.                 }
  37.         }
  38. }
  39. //-------------------------------------------------------------------------------------//
  40. //函數(shù):    void iic_start();
  41. //功能:    I2C總線開始
  42. //-------------------------------------------------------------------------------------//
  43. //   SCL   --- --- ___
  44. //   SDA   --- ___ ___
  45. void iic_start()
  46. {  
  47. IIC_SDA=1;
  48. _nop_();
  49. _nop_();
  50. IIC_SCL=1;         
  51. _nop_();
  52. _nop_();
  53. IIC_SDA=0;
  54. _nop_();
  55. _nop_();
  56. IIC_SCL=0;
  57. _nop_();
  58. _nop_();
  59. }
  60. //-------------------------------------------------------------------------------------//
  61. //函數(shù):    void iic_stop();
  62. //功能:    I2C總線結(jié)束
  63. //需定義:
  64. //-------------------------------------------------------------------------------------//
  65. //   SCL   ___ --- ---
  66. //   SDA   ___ ___ ---
  67. void iic_stop()
  68. {  
  69. IIC_SCL=0;
  70. _nop_();
  71. _nop_();
  72. IIC_SDA=0;
  73. _nop_();
  74. _nop_();
  75. IIC_SCL=1;
  76. _nop_();
  77. _nop_();
  78. IIC_SDA=1;
  79. _nop_();
  80. _nop_();
  81. }
  82. //-------------------------------------------------------------------------------------//
  83. //函數(shù):    void iic_sendbyte(unsigned char c);
  84. //功能:    發(fā)送 8_BIT 數(shù)據(jù)
  85. //-------------------------------------------------------------------------------------//
  86. void iic_sendbyte(unsigned char c)
  87. {
  88. unsigned char bitcnt;
  89. for(bitcnt=0;bitcnt<8;bitcnt++)
  90. {
  91. if((c<<bitcnt)&0x80)
  92. IIC_SDA=1;
  93. else
  94. IIC_SDA=0;
  95. _nop_();
  96. _nop_();
  97. IIC_SCL=1;
  98. _nop_();
  99. _nop_();
  100. IIC_SCL=0;
  101. }
  102. _nop_();
  103. _nop_();
  104. IIC_SDA=1;
  105. _nop_();
  106. _nop_();
  107. IIC_SCL=1;
  108. _nop_();
  109. _nop_();
  110. if(IIC_SDA==0)
  111. IIC_ACK=0;
  112. else
  113. IIC_ACK=1;
  114. IIC_SCL=0;
  115. _nop_();
  116. _nop_();
  117. }
  118. //-------------------------------------------------------------------------------------//
  119. //函數(shù):    int iic_rcvbyte_nack();
  120. //功能:    接收 8_BIT 數(shù)據(jù)  最后ack信號(hào)
  121. //-------------------------------------------------------------------------------------//
  122. int iic_rcvbyte_nack()
  123. {
  124. unsigned char retc;
  125. unsigned char bitcnt;
  126. retc=0;
  127. IIC_SDA=1;
  128. for(bitcnt=0;bitcnt<8;bitcnt++)
  129. {
  130. _nop_();
  131. _nop_();
  132. IIC_SCL=0;
  133. _nop_();
  134. _nop_();
  135. IIC_SCL=1;
  136. _nop_();
  137. _nop_();
  138. retc=retc<<1;
  139. if(IIC_SDA==1)
  140. retc=retc+1;
  141. _nop_();
  142. _nop_();
  143. }
  144. //給出NACK信號(hào)
  145. _nop_();
  146. _nop_();
  147. IIC_SCL=0;
  148. _nop_();
  149. _nop_();
  150. IIC_SDA=1;
  151. _nop_();
  152. _nop_();
  153. IIC_SCL=1;
  154. _nop_();
  155. _nop_();
  156. IIC_SCL=0;
  157. _nop_();
  158. _nop_();
  159. return(retc);
  160. }
  161. //-------------------------------------------------------------------------------------//
  162. //函數(shù):    int iic_rcvbyte_ack();
  163. //功能:    接收 8_BIT 數(shù)據(jù) 最后ack信號(hào)
  164. //-------------------------------------------------------------------------------------//
  165. int iic_rcvbyte_ack()
  166. {
  167. unsigned char retc;
  168. unsigned char bitcnt;
  169. retc=0;
  170. IIC_SDA=1;
  171. for(bitcnt=0;bitcnt<8;bitcnt++)
  172. {
  173. _nop_();
  174. _nop_();
  175. IIC_SCL=0;
  176. _nop_();
  177. _nop_();
  178. IIC_SCL=1;
  179. _nop_();
  180. _nop_();
  181. retc=retc<<1;
  182. if(IIC_SDA==1)
  183. retc=retc+1;
  184. _nop_();
  185. _nop_();
  186. }
  187. //給出ACK信號(hào)
  188. _nop_();
  189. _nop_();
  190. IIC_SCL=0;
  191. _nop_();
  192. _nop_();
  193. IIC_SDA=0;
  194. _nop_();
  195. _nop_();
  196. IIC_SCL=1;
  197. _nop_();
  198. _nop_();
  199. IIC_SCL=0;
  200. _nop_();
  201. _nop_();
  202. return(retc);
  203. }
  204. //-------------------------------------------------------------------------------------//
  205. //函數(shù):      wr_max30100_one_data()
  206. //功能:      寫一位max30100數(shù)據(jù)
  207. //address:   芯片從地址
  208. //saddress:  寫寄存器地址
  209. //w_data:    待寫數(shù)據(jù)
  210. //-------------------------------------------------------------------------------------//
  211. void wr_max30100_one_data(int address,int saddress,int w_data )
  212. {
  213. _nop_();
  214. iic_start();
  215. _nop_();
  216. iic_sendbyte(address);
  217. _nop_();
  218. iic_sendbyte(saddress);
  219. _nop_();
  220. iic_sendbyte(w_data);
  221. _nop_();
  222. iic_stop();
  223. _nop_();
  224. }
  225. //-------------------------------------------------------------------------------------//
  226. //函數(shù):      rd_max30100_one_data()
  227. //功能:      讀一位max30100數(shù)據(jù)
  228. //address:   芯片從地址
  229. //saddress:  讀寄存器地址
  230. //rda:       讀出的數(shù)據(jù)
  231. //-------------------------------------------------------------------------------------//
  232. void rd_max30100_one_data(int address,int saddress)
  233. {
  234. iic_start();
  235. _nop_();
  236. iic_sendbyte(address);
  237. _nop_();
  238. iic_sendbyte(saddress);
  239. _nop_();
  240. address=address+1;
  241. _nop_();
  242. iic_start();
  243. _nop_();
  244. iic_sendbyte(address);
  245. _nop_();
  246. rda=iic_rcvbyte_nack();
  247. _nop_();
  248. iic_stop();
  249. }
  250. //-------------------------------------------------------------------------------------//
  251. //函數(shù):      主程序
  252. //功能:      讀max30100內(nèi)部溫度
  253. //-------------------------------------------------------------------------------------//
  254. main()
  255. {
  256. double temp,temp1,temp2;
  257. //temp       測(cè)量溫度
  258. //temp1      30100整數(shù)部分溫度
  259. //temp2      30100小數(shù)部分溫度
  260. TMOD=0x21;                  
  261. SCON=0x50;
  262. TH1=0xFD;
  263. TL1=0xFD;
  264. TR1=1;                          
  265. TI=1;   
  266. //設(shè)置51的波特率為 9600 N 8 1
  267. //51主頻為11.0592MHz
  268. while(1)
  269. {
  270. wr_max30100_one_data(0xae,0x06,0x0a);       // 0X06地址B3位TEMP_EN置1
  271. delayms(20);                                // 等待溫度轉(zhuǎn)換完成,不等待,讀出數(shù)據(jù)有誤
  272. rd_max30100_one_data(0xae,0x16);            // 讀出溫度信號(hào)
  273. printf("temp1=%d\n",rda);                   // 串口顯示
  274. temp1=rda;
  275. rd_max30100_one_data(0xae,0x17);            // 讀出溫度小數(shù)部分?jǐn)?shù)據(jù)
  276. printf("temp2=%d\n",rda);                   // 串口顯示
  277. temp2=rda;
  278. temp=temp1+(temp2/100);
  279. printf("temp=%.2f\n",temp);                 // 串口顯示
  280. rd_max30100_one_data(0xae,0xff);            // 讀出芯片ID
  281. printf("MAX30100 ID =%d\n",rda);            // 串口顯示
  282. delayms(100);   
  283. }
  284. }
復(fù)制代碼

所有資料51hei提供下載:
MAX30100溫度及ID功能測(cè)試程序.7z (13.93 KB, 下載次數(shù): 10)
回復(fù)

使用道具 舉報(bào)

ID:277550 發(fā)表于 2019-6-3 21:28 | 顯示全部樓層


這芯片,網(wǎng)上能搜索到有STM32的程序
回復(fù)

使用道具 舉報(bào)

ID:553796 發(fā)表于 2019-6-12 09:03 | 顯示全部樓層
devcang 發(fā)表于 2019-6-3 21:28
這芯片,網(wǎng)上能搜索到有STM32的程序

不好意思,我在網(wǎng)上沒有找到這個(gè)stm32的程序,你可以幫忙給我一下連接嗎
回復(fù)

使用道具 舉報(bào)

ID:155507 發(fā)表于 2019-6-12 18:39 | 顯示全部樓層
魚蝦水族 發(fā)表于 2019-6-12 09:03
不好意思,我在網(wǎng)上沒有找到這個(gè)stm32的程序,你可以幫忙給我一下連接嗎


max30100血氧心率制作stm32源碼 OLED顯示
[urlhttp://www.zg4o1577.cn/bbs/dpj-97219-1.html[/url]

max30100血氧傳感器開發(fā)資料 附arduino和stm32源碼
http://www.zg4o1577.cn/bbs/dpj-99329-1.html
回復(fù)

使用道具 舉報(bào)

ID:403420 發(fā)表于 2019-6-12 22:45 | 顯示全部樓層
51改32,首先你要知道如何操作寄存器或者你要知道hal庫
回復(fù)

使用道具 舉報(bào)

ID:553796 發(fā)表于 2019-6-14 11:26 | 顯示全部樓層
angmall 發(fā)表于 2019-6-12 18:39
max30100血氧心率制作stm32源碼 OLED顯示
http://www.zg4o1577.cn/bbs/dpj-97219-1.html[/url]

非常感謝
回復(fù)

使用道具 舉報(bào)

ID:560954 發(fā)表于 2019-6-14 12:07 | 顯示全部樓層
51移植到32不費(fèi)什么事吧,將端口那些什么的修改一下,注意延時(shí)
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

手機(jī)版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 91免费在线| 欧美lesbianxxxxhd视频社区 | 美女在线观看av | 欧美区在线 | 精品九九九 | 一区精品在线观看 | 五月婷婷中文 | 国外成人在线视频网站 | 日韩欧美二区 | 国产精品99久久久久久久久久久久 | 在线观看国产 | 成人精品一区二区三区中文字幕 | www.五月婷婷.com | 日韩在线观看一区二区三区 | 麻豆视频国产在线观看 | 欧美日韩最新 | 91九色视频 | 欧美日韩国产精品一区 | 激情久久网 | 九九热在线观看 | 人人看人人干 | 亚洲字幕在线观看 | 日韩一区二区三区在线观看视频 | 欧洲性生活视频 | 亚洲国产一| 97超碰人人 | 青草久久免费视频 | 久久久久久国产精品免费免费 | 成人免费网站www网站高清 | 久久久久国产 | 黄色在线免费观看视频网站 | 日韩精品成人一区二区三区视频 | 中文字幕中文字幕 | 91在线观看视频 | 亚洲日韩中文字幕一区 | 成人激情视频网 | 青青久在线视频 | 日韩欧美一二三区 | 99久久精品国产一区二区三区 | 成年免费在线观看 | 亚洲视频一区在线观看 |