切换到宽版
  • 6952阅读
  • 4回复

[STM]STM32 CubeMX HAL库  定时器捕获  NEC格式  红外解码 [复制链接]

上一主题 下一主题
离线lyy-cy
 

发帖
326
M币
4
专家
9
粉丝
26
只看楼主 倒序阅读 我要置顶 楼主  发表于: 2018-04-26
采用定时器捕捉功能,只检测下降沿。

下面单片机是 STM32F103C8T6






这些都试过了,都能用。


解码正确。理论和实际值相符。



以下是全部代码,欢迎任意使用。

  1. /* USER CODE BEGIN 0 */
  2. uint16_t IR_thisVal = 0;  //本次值
  3. uint16_t IR_lastVal = 0;  //上次值
  4. uint16_t  ICcont = 0;       //接收计数
  5. uint16_t irflg  = 0;      //接收状态标志位
  6. uint32_t IRcode= 0x0;     //红外接收到的数据16进制
  7. /* USER CODE END 0 */
  8. /* USER CODE BEGIN WHILE */
  9. //  HAL_TIM_IC_Start_IT(&htim4,TIM_CHANNEL_2); //开始捕获 TIM4 的通道 2
  10.   HAL_TIM_IC_Start_IT(&htim4,TIM_CHANNEL_1); //开始捕获 TIM4 的通道 2
  11.   while (1)
  12.   {
  13.     printf("%X\n",IRcode);
  14.     HAL_Delay(5000);
  15.   /* USER CODE END WHILE */
  16. /* USER CODE BEGIN 4 */
  17. void HAL_TIM_IC_CaptureCallback(TIM_HandleTypeDef *htim) //捕获中断发生时执行
  18. {
  19.   if (irflg  == 0) //第一个下降沿
  20.   {
  21.     __HAL_TIM_SET_COUNTER(&htim4,0);
  22.     IR_lastVal =  0;
  23.     irflg  = 1;
  24.   }
  25.   
  26.   if (irflg  == 1) //第二个下降沿
  27.   {
  28.       IR_thisVal = HAL_TIM_ReadCapturedValue(&htim4,TIM_CHANNEL_1);
  29.       if(IR_thisVal>1300&&IR_thisVal<1500) //判断引导成功
  30.       {
  31.         IR_lastVal =IR_thisVal;
  32.         ICcont = 0;
  33.         IRcode=0x0; //红外接收到的数据
  34.         irflg  = 2;
  35.       }
  36.       else
  37.       {
  38.         irflg  = 0; //重新开始
  39.       }
  40.   }
  41.   if (irflg  == 2)  //进入解码
  42.   {
  43.       IR_thisVal = HAL_TIM_ReadCapturedValue(&htim4,TIM_CHANNEL_1);
  44.       if(IR_thisVal-IR_lastVal<200)
  45.       {      
  46.         IRcode|=0; //接收到 0
  47.       }
  48.       else
  49.       {
  50.         IRcode|=1; //接收到 1
  51.       }
  52.       IRcode<<=1; //左移一位.
  53.       IR_lastVal = IR_thisVal;
  54.       ICcont++;
  55.       if(ICcont==32) //4个8bit
  56.       {      
  57.         irflg  = 0;  //重新开始
  58.         
  59.       }
  60.   }
  61. }
  62. /* USER CODE END 4 */


stm32F103C8的工程设置,加上面的代码,可以直接用了。
CubeMX工程设置
[ 此帖被lyy-cy在2018-04-27 11:52重新编辑 ]
本文内容包含图片或附件,获取更多资讯,请 登录 后查看;或者 注册 成为会员获得更多权限
离线lyy-cy

发帖
326
M币
4
专家
9
粉丝
26
只看该作者 1楼 发表于: 2018-04-26
请登录后查看
[ 此帖被lyy-cy在2018-04-27 11:51重新编辑 ]
本文内容包含图片或附件,获取更多资讯,请 登录 后查看;或者 注册 成为会员获得更多权限
离线st547687

发帖
1
M币
420
专家
0
粉丝
0
只看该作者 2楼 发表于: 2019-08-01
Re:STM32 CubeMX HAL库  定时器捕获  NEC格式  红 ..
请登录后查看
[ 此帖被st547687在2019-08-03 18:54重新编辑 ]
离线lyy-cy

发帖
326
M币
4
专家
9
粉丝
26
只看该作者 3楼 发表于: 2019-08-06
回 st547687 的帖子
请登录后查看
离线zenghl

发帖
24
M币
1
专家
0
粉丝
4
只看该作者 4楼 发表于: 2019-08-09
Re:STM32 CubeMX HAL库  定时器捕获  NEC格式  红 ..
请登录后查看
快速回复
限80 字节
温馨提示:所有技术区严禁灌水,“沙发”“顶”字样;禁止广告贴;以免被删除
 
上一个 下一个