找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 2852|回复: 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 单片机教程网

快速回复 返回顶部 返回列表