智能车制作

 找回密码
 注册

扫一扫,访问微社区

查看: 2001|回复: 1
打印 上一主题 下一主题

LPLD库输入捕获的问题,无法上升沿和下降沿触发测高电平

[复制链接]

2

主题

7

帖子

0

精华

高级会员

Rank: 4

积分
572
威望
291
贡献
169
兑换币
178
注册时间
2015-3-10
在线时间
56 小时
毕业学校
NIT
跳转到指定楼层
1#
发表于 2016-4-8 15:54:10 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
用LPLD库输入捕获,测高电平持续的时间,捕获方式为上升和下降沿中断。给一个测试信号,设置为上升沿触发或者下降沿触发都可以正常进入中断,测出信号的周期频率,但是设置为上升沿下降沿中断就不行了,一直捕获不到。程序如下
/*产生脉宽10us,周期50ms的脉宽*/
void pwm_init(void)
{
  ftm_init_struct.FTM_Ftmx = FTM0;        //使能FTM0通道
  ftm_init_struct.FTM_Mode = FTM_MODE_PWM;        //使能PWM模式
  ftm_init_struct.FTM_PwmFreq = 20;        //PWM频率20Hz  周期50ms
  LPLD_FTM_Init(ftm_init_struct);
  LPLD_FTM_PWM_Enable(FTM0, FTM_Ch0,2 ,PTC1 , ALIGN_LEFT);//输出周期50ms,占空比0.01% 高电平10us的脉冲信号,驱动信号

  //LPLD_FTM_PWM_Enable(FTM0, FTM_Ch1,5000 ,PTC2 , ALIGN_LEFT);//测试信号   
}

void ic_init(void)
{
  //配置FTM1模块的输入捕获参数
  ftm1_init_struct.FTM_Ftmx = FTM1;      //使能FTM1通道
  ftm1_init_struct.FTM_Mode = FTM_MODE_IC;       //使能输入捕获模式
  ftm1_init_struct.FTM_ClkDiv = FTM_CLK_DIV128;  //计数器频率为总线时钟的128分频 2.56us记一个数
  ftm1_init_struct.FTM_Isr = ic_isr;     //设置中断函数
  //初始化FTM1
  LPLD_FTM_Init(ftm1_init_struct);  
  LPLD_FTM_IC_Enable(FTM1, FTM_Ch0, PTB0, CAPTURE_RI);//使能输入捕获对应通道,上升沿下降沿捕获进入中断
  //使能FTM1中断
  LPLD_FTM_EnableIrq(ftm1_init_struct);
}

void uart_init(void)
{
  uart5_init_struct.UART_Uartx = UART5; //使用UART5
  uart5_init_struct.UART_BaudRate = 9600; //设置波特率9600
  uart5_init_struct.UART_RxPin = PTE9;  //接收引脚为PTE9
  uart5_init_struct.UART_TxPin = PTE8;  //发送引脚为PTE8
  //初始化UART
  LPLD_UART_Init(uart5_init_struct);
}
void ic_isr(void)
{

  //判断是否为FTM1的Ch0通道产生捕获中断
  if(LPLD_FTM_IsCHnF(FTM1, FTM_Ch0))
  {
    cnt=LPLD_FTM_GetChVal(FTM1, FTM_Ch0);  //获取FTM1的Ch0通道计数值
    LPLD_FTM_ClearCounter(FTM1);
    countFreq=g_bus_clock/LPLD_FTM_GetClkDiv(FTM1);//计数频率390625;
    Freq1=(g_bus_clock/LPLD_FTM_GetClkDiv(FTM1))/cnt;  //脉冲频率=(总线频率/输入捕获分频系数)/计数值
    printf("%d  %d\n",cnt,Freq1);
    //清空FTM1 COUNTER
   // LPLD_FTM_ClearCounter(FTM1);
    //清除输入中断标志
    LPLD_FTM_ClearCHnF(FTM1, FTM_Ch0);
  }
}

回复

使用道具 举报

2

主题

7

帖子

0

精华

高级会员

Rank: 4

积分
572
威望
291
贡献
169
兑换币
178
注册时间
2015-3-10
在线时间
56 小时
毕业学校
NIT
2#
 楼主| 发表于 2016-4-10 17:05:13 | 只看该作者
搞了好几天了,有人知道原因吗? 为啥上升下降沿触发实现不了
回复 支持 反对

使用道具 举报

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

本版积分规则

关于我们|联系我们|小黑屋|智能车制作 ( 黑ICP备2022002344号

GMT+8, 2024-6-28 07:58 , Processed in 0.046122 second(s), 29 queries , Gzip On.

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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