[技术问答] 华大HC32L110产生一个38K的波形驱动红外发射管

[复制链接]
 楼主| zhongtongxue 发表于 2020-11-8 09:42 | 显示全部楼层 |阅读模式
各位大神好,本人想自己改装一下家里的垃圾桶,想把其改成红外检测到有人靠近自动开盖,目前电机驱动已经完成,就是不知道红外检测应该怎么做。我看了华大手册里面有介绍到P23可以产生38K的红外波形,但没有找到相关的范例,请各位大神指点一下小弟。



 楼主| zhongtongxue 发表于 2020-11-8 09:44 | 显示全部楼层
端口复用配置为红外输出信号
1.png
 楼主| zhongtongxue 发表于 2020-11-8 09:45 | 显示全部楼层
问下如果我只要产生38K的波形给到红外引脚,是不是只要写以下代码即:

void P23_38K_init(void)
{
    Clk_SetPeripheralGate(ClkPeripheralRtc,TRUE);         
    Clk_SetRCLFreq(ClkFreq38_4K);      
    Clk_SetRCL_StableTime(ClkCycle256);               
    Clk_Enable(ClkRCL,TRUE);
   
    M0P_GPIO->P2ADS_f.P23 = 0;      // 数字信号
    M0P_GPIO->P23_SEL_f.SEL = 2;    // 端口复用功能选择
    M0P_GPIO->P2DIR_f.P23 = 0;      // 端口方向
    M0P_GPIO->CTRL1_f.IR_POL = 1;    // 反向输出
    //M0P_GPIO->CTRL1_f.IR_POL = 0;    // 正向输出   
}
 楼主| zhongtongxue 发表于 2020-11-10 17:33 | 显示全部楼层
//配置P24为红外发射输出38K
void P24_38K_init(void)
{
  stc_clk_config_t stcCfg;
   
  Clk_SetPeripheralGate(ClkPeripheralGpio, TRUE);
       
        //CLK初始化
  DDL_ZERO_STRUCT(stcCfg);
  stcCfg.enClkSrc = ClkRCH;       // RCH  = 4M
  stcCfg.enHClkDiv = ClkDiv128;   // HCLK = 4M/128
  stcCfg.enPClkDiv = ClkDiv8;     // PCLK = 4M/128/8
       
//        Clk_SetRCHFreq(ClkFreq38_4K);
//        Clk_SwitchTo(ClkRCL);
       
        Clk_Init(&stcCfg);
       
        //P24 输出HCLK
        Gpio_SetFunc_HCLKOUT_P24();       
       
}       

评论

[url=home.php?mod=space&uid=2736592]@zhongtongxue[/url] :这个操作只是把系统时钟HCLK分频输出了,并不是输出红外的38K信号。手册上的描述是对的  发表于 2020-11-11 09:18
我用以上程序可以产生脉冲,但主频的也跟着变化了,有没有大神可以指导指导小白  发表于 2020-11-10 17:34
rickluo 发表于 2020-11-12 10:46 | 显示全部楼层
IMG_8496.jpg

顶起!


您需要登录后才可以回帖 登录 | 注册

本版积分规则

1

主题

7

帖子

0

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