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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 3515|回復: 3
收起左側

HSJ121觸摸按鍵STM32F103單片機驅動程序

[復制鏈接]
ID:483092 發表于 2019-3-2 10:32 | 顯示全部樓層 |閱讀模式
里面有完整的資料

單片機源程序如下:

  1. /* 包含的頭文件 --------------------------------------------------------------*/
  2. #include "bsp.h"
  3. #include "HSJ121.h"
  4. #include "i2c.h"
  5. #include "timer.h"
  6. #include "aboutdata.h"

  7. uint8_t        HSJ121_SendData[HSJ121_SendDataLength];  //命令發送數據
  8. uint8_t HSJ121_ReciveData[HSJ121_ReciveDataLength];        //數據回復接收

  9. uint8_t  HSJ121_Mode_LowScan[HSJ121ModeSetLength]={0x00,0x88,0x88,0x88,0x88,0x88,0x88,0x88,0x80,0x0A};        //低速掃描
  10. uint8_t  HSJ121_Mode_NearInduction[HSJ121ModeSetLength]={0x01,0x88,0x88,0x88,0x88,0x88,0x88,0x88,0x80,0x0A};                //臨場接近感應
  11. uint8_t  HSJ121_KeyScanTime[HSJ121_KeyScanTimeLength]={02,05};        //按鍵掃描時間

  12. //函數聲明(內部調用)
  13. uint8_t HSJ121_SendAndRecive(uint8_t *SendData,uint8_t *ReciveData); //發送和接收
  14. uint8_t HSJ121_SendComByIIC(uint8_t sla,uint8_t *s,uint8_t num);        //通過IIC發送命令
  15. uint8_t HSJ121_RecDataByIIC(uint8_t sla,uint8_t *s);        //通過IIC接收回復數據

  16. //函數聲明(外部調用)
  17. void HSJ121Init(void);        //模塊初始化
  18. uint8_t HSJ121_Set_LowScanMode(uint8_t *Mode);        //設置低速掃描模式
  19. uint8_t HSJ121_Set_NearInductionMode(uint8_t *Mode);        //設置臨近感應模式
  20. uint8_t        HSJ121_Get_Config(void);        //獲取配置信息
  21. uint8_t        HSJ121_Get_Key(void);                  //獲取鍵值
  22. uint8_t HSJ121_Set_ScanTime(uint8_t *ScanTme);        //設置按鍵掃描時間
  23. uint8_t HSJ121_Get_ScanTime(void);        //獲取按鍵掃描時間
  24. uint8_t HSJ121_Set_SleepMode(void);        //設置睡眠模式
  25. uint8_t HSJ121_Into_SleepMode(void);        //進入睡眠模式
  26. uint8_t HSJ121_WakeUp(void);                                //喚醒芯片

  27. /*--------------------------內部調用函數---------------------------------------*/
  28. /************************************************
  29. 函數名稱 : SendComByIIC
  30. 功    能 : 通過IIC發送命令數據幀
  31. 參    數 : uint8_t sla        —— 器件地址
  32.                                           uint8_t *s        —— 命令數據緩沖區
  33.                                           uint8_t num —— 命令長度
  34. 返 回 值 : TRUE —— 正確
  35.                                          FALSE —— 錯誤
  36. 作    者 :
  37. *************************************************/
  38. uint8_t HSJ121_SendComByIIC(uint8_t sla,uint8_t *s,uint8_t num)
  39. {
  40.         uint8_t i,j;
  41.         uint8_t ack=2;
  42.         I2C_Start();        //啟動信號
  43.         //發送器件地址
  44.         ack=I2C_WriteByte(sla|I2C_WR);
  45.         if(ack==I2C_NOACK){
  46. //                printf("send address fail by write\n");
  47.                 return FALSE;
  48.         }else if(ack==I2C_ACK){
  49. //                printf("send address success by write\n");
  50.         }
  51.         TIMDelay_Nms(1);        //延時
  52.         //循環發送命令數據幀
  53.         for(i=0;i<num;i++)
  54.         {
  55.                 ack=I2C_WriteByte(*s);
  56.                 if(ack==I2C_NOACK){
  57. //                        printf("send command data fail\n");
  58.                         return FALSE;
  59.                 }
  60.                 s++;
  61.                 TIMDelay_Nms(1);        //延時
  62.         }
  63.         I2C_Stop();        //停止信號
  64.         return TRUE;
  65. }
  66. /************************************************
  67. 函數名稱 : RecDataByIIC
  68. 功    能 : 通過IIC接收模塊返回數據幀
  69. 參    數 : uint8_t sla        —— 器件地址
  70.                                           uint8_t *s        —— 接收回復數據幀緩沖區
  71.                                           uint8_t num —— 回復數據幀長度
  72. 返 回 值 : TRUE —— 正確
  73.                                          FALSE —— 錯誤
  74. 作    者 :
  75. *************************************************/
  76. uint8_t HSJ121_RecDataByIIC(uint8_t sla,uint8_t *s)
  77. {
  78.                 uint8_t i=0;
  79.                 uint8_t HSJ121_Length;         
  80.     uint8_t j=0;
  81.           uint8_t ack=2;
  82.           uint8_t num;  
  83.         
  84.                 j=250;
  85.           while(1)
  86.                 {
  87.                         I2C_Start();        //啟動信號
  88.                         ack=I2C_WriteByte(sla+1); //發送器件地址+寫入命令
  89. //                        TIMDelay_Nms(5);        //延時
  90.                         if(ack==I2C_ACK){
  91. //                                printf("Send address success by read\n");
  92.                                 break;        //模塊應答成功,退出循環,準備接收數據
  93.                         }
  94.                         //模塊超時沒有應答,返回出錯
  95.                         if(j--==0){
  96.                                 I2C_Stop();
  97. //                                printf("Send address fail by read\n");
  98.                                 return FALSE;
  99.                         }
  100.                 }
  101.                
  102. //                TIMDelay_Nms(1000);        //延時

  103.                 HSJ121_Length=I2C_ReadByte(I2C_ACK);        //接收第一個字節數據,獲取數據幀長度
  104.                 *s = HSJ121_Length;        
  105.                 s++;  
  106.                
  107.                 if(HSJ121_Length==0x00){
  108.                            I2C_Stop();
  109.                                  return FALSE;
  110.                 }
  111.                
  112.                 for(i=0;i<HSJ121_Length-1;i++)  //循環接受數據(除校驗碼外)
  113.                 {
  114.                         *s=I2C_ReadByte(I2C_ACK);
  115.                         s++;
  116.                 }
  117.                         
  118.                 //接收檢驗碼
  119.                 *s=I2C_ReadByte(I2C_NOACK);
  120.                 I2C_Stop();        //停止信號
  121.           return TRUE;
  122. }

  123. /************************************************
  124. 函數名稱 : HSJ121_SendAndRecive(uint8_t *SendData,uint8_t *ReciveData)
  125. 功    能 : 命令發送和回復數據接收
  126. 參    數 : *SendData -- 發送命令緩沖區
  127.             *ReciveData -- 接收數據緩沖區
  128. 返 回 值 : TRUE —— 正確
  129.                                          FALSE —— 錯誤
  130. 作    者 :
  131. *************************************************/
  132. uint8_t HSJ121_SendAndRecive(uint8_t *SendData,uint8_t *ReciveData)
  133. {
  134.         uint8_t Command;
  135.         uint8_t RepetCnt=5;
  136.         
  137.         Command=SendData[CMD];
  138.         
  139.         SendData[SendData[Length]]=GetBcc(SendData,SendData[Length]);        //獲取BCC校驗碼
  140.         
  141.         //發送命令數據幀
  142.         while(RepetCnt)         //重復次數,循環幾次,避免模塊沒有及時發出ACK而退出
  143.         {
  144.                 RepetCnt--;
  145.                 //發送命令數據幀
  146.                 if(HSJ121_SendComByIIC(HSJ121_ADD,SendData,(SendData[Length]+1))==TRUE){
  147. //                        printf("Send command success\n");
  148.                         break;
  149.                 }
  150.                 //發送命令數據幀出錯
  151.                 if(RepetCnt==0){
  152. //                        printf("IIC send command timeout\n");
  153.                         return FALSE;
  154.                 }        
  155.         }
  156.         
  157.         TIMDelay_Nms(5);  
  158.         RepetCnt=250;
  159.         
  160.         //接收模塊返回數據幀
  161.         while(RepetCnt)
  162.   {
  163.                 RepetCnt--;
  164.                
  165.                 if(HSJ121_RecDataByIIC(HSJ121_ADD,ReciveData)==TRUE){
  166. //                        printf("Receive data success\n");
  167.                         break;
  168.                 }
  169.                
  170.                 //接收模塊返回數據幀出錯
  171.                 if(RepetCnt==0){
  172. //                        printf("IIC receive data timeout\n");
  173.                         return FALSE;
  174.                 }
  175.         }
  176.                
  177.         //對模塊返回的數據幀進行校驗        
  178.         if(!GetBcc(ReciveData,ReciveData[Length]+1)){
  179. //                 printf("Bcc check success\n");
  180.                  if(Command==ReciveData[CMD]){
  181. //                         printf("Command check success\n");
  182.                          return TRUE; //校驗成功        
  183.                  }else{
  184. //                         printf("Command check success\n");
  185.                  }
  186.         }else{
  187. //                        printf("Bcc check fail\n");
  188.         }
  189.                 return FALSE;
  190. }        

  191. /*--------------------------外部調用函數---------------------------------------*/
  192. /******************************************/
  193. //函數原型: void HSJ121Init(void)
  194. //輸入參數: 無
  195. //輸出參數: 無
  196. //函數返回:
  197. //功能描述: 芯片初始化
  198. /******************************************/
  199. void HSJ121Init(void)
  200. {
  201.         I2C_Initializes();        //I2C通信初始化
  202.         TIMDelay_Nms(10);                //上電等待3ms,芯片穩定
  203.         printf("HSJ121 init success\n");
  204.         
  205. }
  206. /******************************************/
  207. //函數原型: HSJ121_Set_LOWScanMode(uint8_t *Mode)
  208. //輸入參數: *Mode 設置模式碼(10個字節)
  209. //輸出參數: 無
  210. //函數返回: TRUE or FALSE
  211. //功能描述: 設置低速掃描模式
  212. /******************************************/
  213. uint8_t HSJ121_Set_LowScanMode(uint8_t *Mode)
  214. {
  215.         uint8_t State;
  216.         EXTI->IMR&=~(1<<13); //屏蔽13線上中斷
  217.         
  218.         ClearData(HSJ121_SendData,HSJ121_SendDataLength); //清零發送數據
  219.         ClearData(HSJ121_ReciveData,HSJ121_ReciveDataLength); //清零接收數據
  220.         
  221.         HSJ121_SendData[Length]=0x0C;        //添加數據長度
  222.         HSJ121_SendData[CMD]=0x70;         //添加命令碼
  223.         CopyData(&HSJ121_SendData[DataPOS],Mode,10);
  224.         
  225.         State=HSJ121_SendAndRecive(HSJ121_SendData,HSJ121_ReciveData);        
  226.         
  227. //        將模塊回復的數據從HEX碼轉成Char
  228.         HexToChar(HSJ121_ReciveData,(HSJ121_ReciveData[Length]+1));
  229.         
  230.         EXTI->IMR|=1<<13;  //開13線上中斷
  231.         return State;
  232. }
  233. /******************************************/
  234. //函數原型: HSJ121_Set_NearInductionMode(uint8_t *Mode)
  235. //輸入參數: *Mode 設置模式碼(10個字節)
  236. //輸出參數: 無
  237. //函數返回: TRUE or FALSE
  238. //功能描述: 設置臨近感應模式
  239. /******************************************/
  240. uint8_t HSJ121_Set_NearInductionMode(uint8_t *Mode)
  241. {
  242.         uint8_t State;
  243.         EXTI->IMR&=~(1<<13); //屏蔽13線上中斷
  244.         
  245.         ClearData(HSJ121_SendData,HSJ121_SendDataLength); //清零發送數據
  246.         ClearData(HSJ121_ReciveData,HSJ121_ReciveDataLength); //清零接收數據
  247.         
  248.         HSJ121_SendData[Length]=0x0C;        //添加數據長度
  249.         HSJ121_SendData[CMD]=0x70;         //添加命令碼
  250.         CopyData(&HSJ121_SendData[DataPOS],Mode,10);
  251.         
  252.         State=HSJ121_SendAndRecive(HSJ121_SendData,HSJ121_ReciveData);
  253.         
  254. //        將模塊回復的數據從HEX碼轉成Char
  255.         HexToChar(HSJ121_ReciveData,(HSJ121_ReciveData[Length]+1));
  256.         
  257.         EXTI->IMR|=1<<13;  //開13線上中斷
  258.         return State;
  259. }
  260. /******************************************/
  261. //函數原型: uint8_t        HSJ121_Get_Config()
  262. //輸入參數: 無
  263. //輸出參數: 無
  264. //函數返回: TRUE or FALSE
  265. //功能描述: 獲取配置信息
  266. /******************************************/
  267. uint8_t        HSJ121_Get_Config(void)
  268. {
  269.         uint8_t State;
  270.         EXTI->IMR&=~(1<<13); //屏蔽13線上中斷
  271.         
  272.         ClearData(HSJ121_SendData,HSJ121_SendDataLength); //清零發送數據
  273.         ClearData(HSJ121_ReciveData,HSJ121_ReciveDataLength); //清零接收數據
  274.         
  275.         HSJ121_SendData[Length]=0x02;        //添加數據長度
  276.         HSJ121_SendData[CMD]=0x80;         //添加命令碼
  277.         
  278.         State=HSJ121_SendAndRecive(HSJ121_SendData,HSJ121_ReciveData);
  279.         
  280. //        將模塊回復的數據從HEX碼轉成Char
  281.         HexToChar(HSJ121_ReciveData,(HSJ121_ReciveData[Length]+1));
  282.         
  283.         EXTI->IMR|=1<<13;  //開13線上中斷
  284.         return State;
  285. }
  286. /******************************************/
  287. //函數原型: HSJ121_Get_Key(void)
  288. //輸入參數: 無
  289. //輸出參數: 無
  290. //函數返回: TRUE or FALSE
  291. //功能描述: 獲取鍵值
  292. /******************************************/
  293. uint8_t        HSJ121_Get_Key(void)
  294. {
  295.         uint8_t num;
  296.         uint8_t State;
  297.         EXTI->IMR&=~(1<<13); //屏蔽13線上中斷
  298.         
  299.         ClearData(HSJ121_SendData,HSJ121_SendDataLength); //清零發送數據
  300.         ClearData(HSJ121_ReciveData,HSJ121_ReciveDataLength); //清零接收數據
  301.         
  302.         HSJ121_SendData[Length]=0x02;        //添加數據長度
  303.         HSJ121_SendData[CMD]=0xA0;         //添加命令碼
  304.         
  305.         for(num=0;num<3;num++)
  306.         {
  307.                 State=HSJ121_SendAndRecive(HSJ121_SendData,HSJ121_ReciveData);
  308.                 if(State==TRUE){
  309.                         break;
  310.                 }
  311.         }        
  312.         
  313. //        將模塊回復的數據從HEX碼轉成Char
  314.         HexToChar(HSJ121_ReciveData,(HSJ121_ReciveData[Length]+1));
  315.         
  316.         EXTI->IMR|=1<<13;  //開13線上中斷
  317.         return State;
  318. }
  319. /******************************************/
  320. //函數原型: HSJ121_Set_ScanTime(uint8_t *ScanTme)
  321. //輸入參數: *ScanTme 掃描時間
  322. //輸出參數: 無
  323. //函數返回: TRUE or FALSE
  324. //功能描述: 設置掃描時間
  325. /******************************************/
  326. uint8_t HSJ121_Set_ScanTime(uint8_t *ScanTme)  //設置按鍵掃描時間
  327. {
  328.         uint8_t State;
  329.         EXTI->IMR&=~(1<<13); //屏蔽13線上中斷
  330.         
  331.         ClearData(HSJ121_SendData,HSJ121_SendDataLength); //清零發送數據
  332.         ClearData(HSJ121_ReciveData,HSJ121_ReciveDataLength); //清零接收數據
  333.         
  334.         HSJ121_SendData[Length]=0x04;        //添加數據長度
  335.         HSJ121_SendData[CMD]=0x71;         //添加命令碼
  336.         CopyData(&HSJ121_SendData[DataPOS],ScanTme,HSJ121_KeyScanTimeLength);
  337.         
  338.         State=HSJ121_SendAndRecive(HSJ121_SendData,HSJ121_ReciveData);
  339.         
  340. //        將模塊回復的數據從HEX碼轉成Char
  341.         HexToChar(HSJ121_ReciveData,(HSJ121_ReciveData[Length]+1));
  342.         
  343.         EXTI->IMR|=1<<13;  //開13線上中斷
  344.         return State;        
  345. }
  346. /******************************************/
  347. //函數原型: HSJ121_Get_ScanTime(void)
  348. //輸入參數: 無
  349. //輸出參數: 無
  350. //函數返回: TRUE or FALSE
  351. //功能描述: 獲取掃描時間
  352. /******************************************/
  353. uint8_t HSJ121_Get_ScanTime(void)  //獲取按鍵掃描時間
  354. {
  355.         uint8_t State;
  356.         EXTI->IMR&=~(1<<13); //屏蔽13線上中斷
  357.         
  358.   ClearData(HSJ121_SendData,HSJ121_SendDataLength); //清零發送數據
  359.         ClearData(HSJ121_ReciveData,HSJ121_ReciveDataLength); //清零接收數據
  360.         
  361.         HSJ121_SendData[Length]=0x02;        //添加數據長度
  362.         HSJ121_SendData[CMD]=0x81;         //添加命令碼
  363.         
  364.         State=HSJ121_SendAndRecive(HSJ121_SendData,HSJ121_ReciveData);
  365.         
  366. //        將模塊回復的數據從HEX碼轉成Char
  367.         HexToChar(HSJ121_ReciveData,(HSJ121_ReciveData[Length]+1));
  368.         
  369.         EXTI->IMR|=1<<13;  //開13線上中斷
  370.         return State;
  371. }        
  372. /******************************************/
  373. //函數原型: HSJ121_Set_SleepMode(void)
  374. //輸入參數: 無
  375. //輸出參數: 無
  376. //函數返回: TRUE or FALSE
  377. //功能描述: 設置睡眠模式
  378. /******************************************/
  379. uint8_t        HSJ121_Set_SleepMode(void)
  380. {
  381.         uint8_t State;
  382.         EXTI->IMR&=~(1<<13); //屏蔽13線上中斷
  383.         
  384.         ClearData(HSJ121_SendData,HSJ121_SendDataLength); //清零發送數據
  385.         ClearData(HSJ121_ReciveData,HSJ121_ReciveDataLength); //清零接收數據
  386.         
  387.         HSJ121_SendData[Length]=0x03;        //添加數據長度
  388.         HSJ121_SendData[CMD]=0x91;         //添加命令碼
  389. //        HSJ121_SendData[DataPOS]=0x00;        //關閉睡眠模式
  390.         HSJ121_SendData[DataPOS]=0x01;        //使能睡眠模式        
  391.         
  392.         State=HSJ121_SendAndRecive(HSJ121_SendData,HSJ121_ReciveData);
  393.         
  394. //        將模塊回復的數據從HEX碼轉成Char
  395.         HexToChar(HSJ121_ReciveData,(HSJ121_ReciveData[Length]+1));
  396.         
  397.         EXTI->IMR|=1<<13;  //開13線上中斷
  398.         return State;
  399. }
  400. /******************************************/
  401. //函數原型: HSJ121_Into_SleepMode(void)
  402. //輸入參數: 無
  403. //輸出參數: 無
  404. //函數返回: TRUE or FALSE
  405. //功能描述: 進入睡眠模式
  406. /******************************************/
  407. uint8_t        HSJ121_Into_SleepMode(void)
  408. {
  409.         uint8_t State;
  410.         EXTI->IMR&=~(1<<13); //屏蔽13線上中斷
  411.         
  412.         ClearData(HSJ121_SendData,HSJ121_SendDataLength); //清零發送數據
  413.         ClearData(HSJ121_ReciveData,HSJ121_ReciveDataLength); //清零接收數據        
  414.         
  415.         HSJ121_SendData[Length]=0x02;        //添加數據長度
  416.         HSJ121_SendData[CMD]=0x90;         //添加命令碼
  417.         
  418.         State=HSJ121_SendAndRecive(HSJ121_SendData,HSJ121_ReciveData);

  419. //        將模塊回復的數據從HEX碼轉成Char
  420.         HexToChar(HSJ121_ReciveData,(HSJ121_ReciveData[Length]+1));
  421.         
  422.         EXTI->IMR|=1<<13;  //開13線上中斷
  423.         return State;
  424. }
  425. /******************************************/
  426. //函數原型: HSJ121_WakeUp()
  427. //輸入參數: 無
  428. //輸出參數: 無
  429. //函數返回: TRUE or FALSE
  430. //功能描述: 喚醒芯片,進入工作模式
  431. /******************************************/
  432. uint8_t HSJ121_WakeUp(void)  
  433. {
  434.         uint8_t State;
  435.         EXTI->IMR&=~(1<<13); //屏蔽13線上中斷
  436.         
  437.         ClearData(HSJ121_SendData,HSJ121_SendDataLength); //清零發送數據
  438.         ClearData(HSJ121_ReciveData,HSJ121_ReciveDataLength); //清零接收數據
  439.         
  440.         HSJ121_SendData[Length]=0x02;        //添加數據長度
  441.         HSJ121_SendData[CMD]=0xA6;         //添加命令碼

  442.         State=HSJ121_SendAndRecive(HSJ121_SendData,HSJ121_ReciveData);
  443.         
  444. //        將模塊回復的數據從HEX碼轉成Char
  445.         HexToChar(HSJ121_ReciveData,(HSJ121_ReciveData[Length]+1));
  446.         
  447.         EXTI->IMR|=1<<13;  //開13線上中斷
  448.         return State;        
  449. }        
  450.                                  
復制代碼


  1. //////////////////////////////////////////////////////////////////////////////////         
  2. //本程序只供測試使用,不能用作產品代碼
  3. //////////////////////////////////////////////////////////////////////////////////
  4. /* 包含的頭文件 --------------------------------------------------------------*/
  5. #include "bsp.h"
  6. #include "i2c.h"
  7. #include "timer.h"
  8. #include "usart.h"

  9. #include "aboutdata.h"
  10. #include "HSJ121.h"

  11. /************************************************
  12. 函數名稱 : System_Initializes
  13. 功    能 : 系統初始化
  14. 參    數 : 無
  15. 返 回 值 : 無
  16. 作    者 :
  17. *************************************************/
  18. void System_Initializes(void)
  19. {
  20.   BSP_Initializes();                                                                                                                //底層初始化
  21.   TIMER_Initializes();                                                                                                        //TIMER初始化
  22.   USART_Initializes();                                                                                                        //串口1初始化
  23. }

  24. /************************************************
  25. 函數名稱 : main
  26. 功    能 : 主函數入口
  27. 參    數 : 無
  28. 返 回 值 : int
  29. 作    者 :
  30. *************************************************/
  31. int main(void)
  32. {
  33.   System_Initializes();                                                                                                         //系統初始化
  34.         HSJ121Init();                                                                                                                                         //芯片初始化

  35. //所有命令都必須在喚醒成功的狀態下執行
  36. //---------------------芯片喚醒-------------------------//
  37. #if HSJ_WakeUp_en
  38.                 if(HSJ121_WakeUp()==TRUE){
  39.                         printf("Wake Up Success\n");
  40.                         USART1_PrintfNChar(CharData,strlen(CharData));        
  41. //-----------------------------------------------------//                                
  42. //---------------------低速掃描模式---------------------//
  43. #if        HSJ_LowScanMode_en
  44.                 if(HSJ121_Set_LowScanMode(HSJ121_Mode_LowScan)==TRUE){
  45.                         printf("Set Low Scan Mode Success\n");
  46.                         USART1_PrintfNChar(CharData,strlen(CharData));
  47.                 }else{
  48.                         printf("Set Low Scan Mode Fail\n");
  49.                         USART1_PrintfNChar(CharData,strlen(CharData));
  50.                 }
  51. #endif                        
  52. //---------------------接近感應模式---------------------//
  53. #if        HSJ_NearInductionMode_en
  54.                 if(HSJ121_Set_NearInductionMode(HSJ121_Mode_NearInduction)==TRUE){
  55.                         printf("Set Near Induction Mode Success\n");
  56.                         USART1_PrintfNChar(CharData,strlen(CharData));
  57.                 }else{
  58.                         printf("Set Near Induction Mode Fail\n");
  59.                         USART1_PrintfNChar(CharData,strlen(CharData));
  60.                 }        
  61. #endif               
  62. //---------------------獲取配置-------------------------//
  63. #if HSJ_GetConfig_en
  64.                 if(HSJ121_Get_Config()==TRUE){
  65.                         printf("Get Config Success\n");
  66.                         USART1_PrintfNChar(CharData,strlen(CharData));
  67.                 }else{
  68.                         printf("Get Config Fail\n");
  69.                         USART1_PrintfNChar(CharData,strlen(CharData));
  70.                 }
  71. #endif
  72. //---------------------設置掃描時間----------------------//        
  73. #if HSJ_SetScanTime_en
  74.                 if(HSJ121_Set_ScanTime(HSJ121_KeyScanTime)==TRUE){
  75.                         printf("Set Scan Time Success\n");
  76.                         USART1_PrintfNChar(CharData,strlen(CharData));
  77.                 }else{
  78.                         printf("Set Scan Time Fail\n");
  79.                         USART1_PrintfNChar(CharData,strlen(CharData));
  80.                 }
  81. #endif
  82. //---------------------獲取掃描時間----------------------//        
  83. #if HSJ_GetScanTime_en
  84.                 if(HSJ121_Get_ScanTime()==TRUE){
  85.                         printf("Get Scan Time Success\n");
  86.                         USART1_PrintfNChar(CharData,strlen(CharData));
  87.                 }else{
  88.                         printf("Get Scan Time Fail\n");
  89.                         USART1_PrintfNChar(CharData,strlen(CharData));
  90.                 }
  91. #endif        
  92. //---------------------設置睡眠模式----------------------//        
  93. #if HSj_SetSleepMode_en
  94.                 if(HSJ121_Set_SleepMode()==TRUE){
  95.                         printf("Set Sleep Mode Success\n");
  96.                         USART1_PrintfNChar(CharData,strlen(CharData));
  97.                 }else{
  98.                         printf("Set Sleep Mode Fail\n");
  99.                         USART1_PrintfNChar(CharData,strlen(CharData));
  100.                 }
  101. #endif                        
  102. //---------------------進入睡眠模式---------------------//
  103. #if HSJ_IntoSleepMode_en
  104.                 if(HSJ121_Into_SleepMode()==TRUE){
  105.                         printf("Into Sleep Mode Success\n");
  106.                         USART1_PrintfNChar(CharData,strlen(CharData));
  107.                 }else{
  108.                         printf("Into Sleep Mode Fail\n");
  109.                         USART1_PrintfNChar(CharData,strlen(CharData));
  110.                 }               
  111. #endif               
  112. //-----------------------------------------------------//                                
  113.                 }else{
  114.                         printf("Wake Up Fail\n");
  115.                         USART1_PrintfNChar(CharData,strlen(CharData));
  116.                 }        
  117. #endif
  118.                
  119.   while(1);
  120. }


  121. /******************************* end ************************************/
復制代碼

所有資料51hei提供下載:
HSJ121-STM32F103RCT6.7z (391.06 KB, 下載次數: 15)


評分

參與人數 1黑幣 +50 收起 理由
admin + 50 共享資料的黑幣獎勵!

查看全部評分

回復

使用道具 舉報

ID:495929 發表于 2019-6-5 10:39 | 顯示全部樓層
樓主,我IIC讀出來的數據一直是0,你有么有碰到類似的情況?
回復

使用道具 舉報

ID:495929 發表于 2019-6-5 19:31 | 顯示全部樓層
樓主我用了你的hsj121的源碼,就是read的時候一直是0,很奇怪
回復

使用道具 舉報

ID:516571 發表于 2019-6-8 11:36 | 顯示全部樓層
感謝樓主的分享,好好學習下
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 日韩在线观看网站 | 亚洲女优在线播放 | 狠狠色综合网站久久久久久久 | 亚洲国产专区 | 久久精品国产一区 | 天天人人精品 | 亚洲精品 在线播放 | 日本一区二区三区四区 | 天堂资源最新在线 | 亚洲第一成年免费网站 | 69亚洲精品 | 日本综合在线观看 | 国产精品成人国产乱一区 | 精品综合久久久 | 毛片韩国 | 国产欧美精品一区二区 | 日韩欧美视频网站 | 日韩视频精品在线 | 亚洲www| 999免费网站 | 成在线人视频免费视频 | 国产999精品久久久 午夜天堂精品久久久久 | 精品国产青草久久久久福利 | 亚洲精品一区二区三区四区高清 | 中文字幕在线观看视频一区 | 国产一级视频在线观看 | 国产亚洲精品一区二区三区 | 久久这里有精品 | 欧美最猛性xxxxx亚洲精品 | 久久国产免费看 | 国产h视频| 四虎国产 | 国产 欧美 日韩 一区 | 国产精品视频久久久 | 久久久天天| 亚洲高清在线观看 | 亚洲综合一区二区三区 | 97视频在线免费 | 在线观看成人小视频 | 亚洲三区在线观看 | 国产精品观看 |