打印
[技术问答]

华大HC32L110产生一个38K的波形驱动红外发射管

[复制链接]
938|6
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
各位大神好,本人想自己改装一下家里的垃圾桶,想把其改成红外检测到有人靠近自动开盖,目前电机驱动已经完成,就是不知道红外检测应该怎么做。我看了华大手册里面有介绍到P23可以产生38K的红外波形,但没有找到相关的范例,请各位大神指点一下小弟。



使用特权

评论回复
沙发
zhongtongxue|  楼主 | 2020-11-8 09:44 | 只看该作者
端口复用配置为红外输出信号

1.png (79.06 KB )

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();       
       
}       

使用特权

评论回复
评论
martinhu 2020-11-11 09:18 回复TA
@zhongtongxue :这个操作只是把系统时钟HCLK分频输出了,并不是输出红外的38K信号。手册上的描述是对的 
zhongtongxue 2020-11-10 17:34 回复TA
我用以上程序可以产生脉冲,但主频的也跟着变化了,有没有大神可以指导指导小白 
5
rickluo| | 2020-11-12 10:46 | 只看该作者


顶起!


使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

1

主题

7

帖子

0

粉丝