历史上的今天
今天是:2024年09月06日(星期五)
2019年09月06日 | STM32定时器 输入捕获实现双边沿检测
2019-09-06 来源:eefocus
STM32的定时器有输入捕获功能,在STM32F10x_tim.h中对于TIM_Input_Capture_Polarity有如下定义
#define TIM_ICPolarity_Rising ((uint16_t)0x0000)
#define TIM_ICPolarity_Falling ((uint16_t)0x0002)
#define TIM_ICPolarity_BothEdge ((uint16_t)0x000A)
#define IS_TIM_IC_POLARITY(POLARITY) (((POLARITY) == TIM_ICPolarity_Rising) ||
((POLARITY) == TIM_ICPolarity_Falling))
#define IS_TIM_IC_POLARITY_LITE(POLARITY) (((POLARITY) == TIM_ICPolarity_Rising) ||
((POLARITY) == TIM_ICPolarity_Falling)||
((POLARITY) == TIM_ICPolarity_BothEdge))
可以 可以出具有BothEdge也就是双边沿检测,但是实际上并没有
执行的是没有双边沿的,因此我们要手工实现双边沿,如下见技术手册
也就是在中断中我们可以选择检测本次中断是上升沿中断还是下降沿中断,如果是上升沿中断,就修改为下降沿中断,反之就修改为上升沿中断。
void TIM1_CC_IRQHandler(void)// 用相应的定时器中断
{
u8 i;
if (TIM_GetITStatus(TIM1, TIM_IT_CC1) != RESET)//是TIM1CH2
{
TIM_ClearITPendingBit(TIM1, TIM_IT_CC1);//清空捕获标志
if(GPIO_ReadInputDataBit(GPIOA,GPIO_Pin_8))//如果当前是高电平,那么下降沿,反之设置上升沿~!!!灵感!
TIM1->CCER|=(1<<1);
else
TIM1->CCER&=~(1<<1);
}}
既可以实现上升沿和下降沿
上一篇:STM32外部中断笔记(一)
下一篇:stm32 起步 gpio操作
史海拾趣
|
请问数字增益与模拟增益的区别,谢谢!!!!在手机系统里,如speaker这一路,为了增大音量,可以调节其数字增益及模拟增益以达到目的!!!那么,请问请问数字增益与模拟增益的区别,谢谢!!!请问增大音量且又要减小噪声,调模拟增益好还是数字增益好,请 ...… 查看全部问答> |
|
[求助]怎样把56MHZ的正弦信号(中心点0电平)转化成TTL或CMOS电平? 请教高手:[求助]怎样把56MHZ的正弦信号(中心点0电平)转化成TTL或CMOS电平? 我想用FPGA对56MHZ的正弦信号(中心点0电平)进行计数.该正弦信号中心点是0电平,峰峰值不接高频电缆时用示波器测的是5V,经过电缆后测的是3V.由于FPGA无法识别负电平 ...… 查看全部问答> |
|
如题,我现在用的是模拟器,使用了xml解析器(msxml3)单步发现调用函数CoCreateInstance失败,提示没有注册类别,我判断是没有安装msxml3造成的,从msdn上下载了msxml3.msi,但无法安装,请问该怎样安装呢,需要手动改注册表吗(我的是wince5.0,模 ...… 查看全部问答> |
|
我用f449晶振32768,用如下程序把主时钟提高到了4M void init_mcu_clk(void) { // fMCLK = D*SCFQCTL*fXTA1 = 2*128*32,768 = 8,388,608 Hz主时钟 SCFI0 |= FN_4; SCFQCTL = SCFQ_4M; FLL_CTL0 = DCOPLUS + XCAP18PF; } 现在苦于把主时钟 ...… 查看全部问答> |
|
UC3842启动电压是16V,启动完以后再由变压器供电,为让启动以后一直有变压器供电,变压器的输出电压是不是一定要大于16V呢?能不能直接有高压侧通过电阻一直给它供电? … 查看全部问答> |
|
请教下我的dsp出现 API error 24 ,无法进行程序的擦除,也就无法进行烧写。 dsp连上仿真器后还能看到片内flash上的数据和密码区内的数据,但是用ccs 自带的depletion recover 出现错误说在0x00000000处就不行。 并且仔细查看了 ...… 查看全部问答> |




