[开发工具] 新定义MCU开发板测评 + 易码魔盒体验之红外遥控解码

[复制链接]
 楼主| chongdongchen 发表于 2022-12-5 09:38 | 显示全部楼层 |阅读模式
<
一直忙于工作没时间做评测,看到易码魔盒里面有红外解码配置。刚好工作用到红外解码功能,且手上有配件。
那就先从这里开始吧,硬件比较简单,看图:
1.jpg
2.jpg
0.jpg
在魔盒中配置:
10.jpg
然后生成keil工程,之后修改main函数、编译:
  1. void main(void)
  2. {        
  3.     /*** MCU init***/
  4.     SC_Init();
  5.     /*<Generated by EasyCodeCube begin>*/
  6.     /*<UserCodeStart>*//*<SinOne-Tag><1>*/
  7.     SCD_IR_Decode_Init();
  8.     /*<UserCodeEnd>*//*<SinOne-Tag><1>*/
  9.     /*<UserCodeStart>*//*<SinOne-Tag><3>*/
  10.     SCD_Time0Control_Cmd( 1 );
  11.     /*<UserCodeEnd>*//*<SinOne-Tag><3>*/
  12.     /*<UserCodeStart>*//*<SinOne-Tag><4>*/
  13.     #define NEC_DATA_SET    0x12
  14.     #define NEC_DATA_UP     0x1B
  15.     #define NEC_DATA_DW     0x1A
  16.     #define NEC_DATA_LF     0x04
  17.     #define NEC_DATA_RT     0x06
  18.     #define NEC_DATA_OK     0x05
  19.     while(1)
  20.     {
  21.         /*<UserCodeStart>*//*<SinOne-Tag><5>*/
  22.         if(SCD_IR_GetReceiveFlag())
  23.         {
  24.             /*<UserCodeStart>*//*<SinOne-Tag><6>*/
  25.             switch(SCD_IR_Decode_ReadValue(2))
  26.             {
  27.                 /*<UserCodeStart>*//*<SinOne-Tag><7>*/
  28.                 case NEC_DATA_UP:
  29.                     GPIO_WriteHigh(GPIO0, GPIO_PIN_1);
  30.                     break;
  31.                 /*<UserCodeEnd>*//*<SinOne-Tag><7>*/
  32.                 /*<UserCodeStart>*//*<SinOne-Tag><8>*/
  33.                 case NEC_DATA_DW:
  34.                     GPIO_WriteLow(GPIO0, GPIO_PIN_1);
  35.                     break;
  36.                 /*<UserCodeEnd>*//*<SinOne-Tag><8>*/
  37.                 /*<UserCodeStart>*//*<SinOne-Tag><9>*/
  38.                 case NEC_DATA_OK:
  39.                     GPIO_TogglePin(GPIO0, GPIO_PIN_1);
  40.                     break;
  41.                 /*<UserCodeEnd>*//*<SinOne-Tag><9>*/
  42.                 /*<UserCodeStart>*//*<SinOne-Tag><17>*/
  43.                 default: break;
  44.                 /*<UserCodeEnd>*//*<SinOne-Tag><17>*/
  45.             }
  46.             /*<UserCodeEnd>*//*<SinOne-Tag><6>*/
  47.         }
  48.         /*<UserCodeEnd>*//*<SinOne-Tag><5>*/
  49.     }
  50.     /*<UserCodeEnd>*//*<SinOne-Tag><4>*/
  51.     /*<Generated by EasyCodeCube end>*/
  52. }
再用新定义的ISPTOOL工具,把hex烧录到单片机里:
11.jpg
 楼主| chongdongchen 发表于 2022-12-5 09:41 | 显示全部楼层
烧录完成后,拿起遥控对着开发板就是一通按,结果没反应!!
还以为会一次性成功呢,反复检查魔盒配置和红外配置代码,都没发现问题。。
 楼主| chongdongchen 发表于 2022-12-5 09:51 | 显示全部楼层
最后在SC_it.c这里发现了问题,本来接收管脚是属于int1,生成的红外解码代码却在int2里面:
  1. void INT2Interrupt()                interrupt 10
  2. {       
  3.     /*INT2_it write here begin*/
  4.     /*INT2_it write here*/
  5.     /*<Generated by EasyCodeCube begin>*/
  6.     /*<UserCodeStart>*//*<SinOne-Tag><23>*/
  7.     //INT2Interrupt
  8.     {
  9.         /*<UserCodeStart>*//*<SinOne-Tag><24>*/
  10.         SCD_IR_Decode();
  11.         /*<UserCodeEnd>*//*<SinOne-Tag><24>*/
  12.     }
  13.     /*<UserCodeEnd>*//*<SinOne-Tag><23>*/
  14.     /*<Generated by EasyCodeCube end>*/
  15.     /*INT2Interrupt Flag Clear begin*/
  16.     /*INT2Interrupt Flag Clear end*/               
  17. }


现在把这个复制到int1里:
  1. void INT1Interrupt()                interrupt 2               
  2. {
  3.     TCON &= 0XF7;//Clear interrupt flag bit
  4.     /*INT1_it write here begin*/
  5.     /*INT1_it write here*/
  6.     /*<Generated by EasyCodeCube begin>*/
  7.         SCD_IR_Decode();
  8.     /*<Generated by EasyCodeCube end>*/
  9.     /*INT1Interrupt Flag Clear begin*/
  10.     /*INT1Interrupt Flag Clear end*/                                       
  11. }


 楼主| chongdongchen 发表于 2022-12-5 09:51 | 显示全部楼层
成功了:
3.gif
 楼主| chongdongchen 发表于 2022-12-5 09:59 | 显示全部楼层
利用了魔盒配置,方便了好多,只需要手写应用代码就可以,不过今天这个中断配置错误,不知道是不是代表发现了魔盒的一个bug呢?
vivilyly 发表于 2022-12-14 10:03 | 显示全部楼层
可以移植之前的51单片机的代码。
51xlf 发表于 2022-12-14 10:12 | 显示全部楼层
这个使用的 是中断吗?              

评论

是的  发表于 2023-1-6 09:40
RDS小新 发表于 2022-12-22 17:19 | 显示全部楼层
您好,魔盒生成的代码受到资源配置和流程图配置两方面的影响,目前魔盒中红外解码这个例程我们默认配置的是INT2中断,在您勾选配置为INT1后,需要手动修改一下流程图中的控件为INT1中断。 微信截图_20221222171747.png
后期我们会继续改进,给您带来更好的使用体验,感谢您的反馈~
cashrwood 发表于 2023-1-5 13:54 | 显示全部楼层
可不可以实现红外的发送功能?              

评论

目前不能  发表于 2023-1-6 09:40
bartonalfred 发表于 2023-1-5 14:04 | 显示全部楼层
这个是自动生成的吗?              

评论

对  发表于 2023-1-6 09:41
robertesth 发表于 2023-1-5 14:28 | 显示全部楼层
易码魔盒怎么跟着stm32cubemx似的?

评论

是有点类似  发表于 2023-1-6 09:41
updownq 发表于 2023-1-9 09:24 | 显示全部楼层
这个如何做红外的发射呢?              
ingramward 发表于 2023-1-9 09:54 | 显示全部楼层
可以移植其他的产品过来吗?              
yeates333 发表于 2023-1-9 11:11 | 显示全部楼层
这个解码是自己设计的吗              
usysm 发表于 2023-1-9 13:01 | 显示全部楼层
网上有很多的代码可以参考的。              
biechedan 发表于 2023-1-9 15:12 | 显示全部楼层
EasyCodeCube能够配置红外的代码吗?
您需要登录后才可以回帖 登录 | 注册

本版积分规则

55

主题

1238

帖子

10

粉丝
快速回复 在线客服 返回列表 返回顶部

55

主题

1238

帖子

10

粉丝
快速回复 在线客服 返回列表 返回顶部