OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 3267|回复: 6

STM32F4单片机TIM12做输入捕获的问题

[复制链接]

1

主题

4

帖子

0

精华

新手入门

积分
10
金钱
10
注册时间
2019-8-26
在线时间
2 小时
发表于 2019-8-26 15:55:07 | 显示全部楼层 |阅读模式
1金钱
各位大神,你们是否有遇到过使用TIM9或者TIM12做输入捕获实验呢?我最近在做TIM12做输入捕获实验,发现TIM12输入捕获中断可以进去,但是计数值始终不变,例程如下:

void TIM12_CH1_Cap_Init(uint16_t arr,uint16_t psc)
{
TIM_ICInitTypeDef  TIM12_ICInitStructure;
GPIO_InitTypeDef GPIO_InitStructure;
TIM_TimeBaseInitTypeDef  TIM_TimeBaseStructure;
NVIC_InitTypeDef NVIC_InitStructure;

RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM12,ENABLE);   //TIM5ʱÖÓʹÄÜ   
RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOB, ENABLE); /* PA0,PA12-> ×óÓÒÂö³åÊäÈë */

GPIO_InitStructure.GPIO_Pin = GPIO_Pin_14; //GPIOA0
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF;//¸´Óù¦ÄÜ
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_100MHz; //ËÙ¶È100MHz
GPIO_InitStructure.GPIO_OType = GPIO_OType_PP; //ÍÆÍ츴ÓÃÊä³ö
GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_DOWN; //ÏÂÀ­
GPIO_Init(GPIOB,&GPIO_InitStructure); //³õʼ»&macrA0
GPIO_PinAFConfig(GPIOB,GPIO_PinSource14,GPIO_AF_TIM12); //PA0¸´ÓÃλ¶¨Ê±Æ÷5
  
   
TIM_TimeBaseStructure.TIM_Prescaler=psc;  //¶¨Ê±Æ÷·ÖƵ
TIM_TimeBaseStructure.TIM_CounterMode=TIM_CounterMode_Up; //ÏòÉϼÆÊýģʽ
TIM_TimeBaseStructure.TIM_Period=arr;   //×Ô¶¯ÖØ×°ÔØÖµ
TIM_TimeBaseStructure.TIM_ClockDivision=TIM_CKD_DIV1;

TIM_TimeBaseInit(TIM12,&TIM_TimeBaseStructure);

//³õʼ»¯TIM5ÊäÈë²¶»ñ²ÎÊý
TIM11_ICInitStructure.TIM_Channel = TIM_Channel_1; //CC1S=01  Ñ¡ÔñÊäÈë¶Ë IC1Ó³Éäµ½TI1ÉÏ
    TIM11_ICInitStructure.TIM_ICPolarity = TIM_ICPolarity_Rising; //ÉÏÉýÑØ²¶»ñ
    TIM11_ICInitStructure.TIM_ICSelection = TIM_ICSelection_DirectTI; //Ó³Éäµ½TI1ÉÏ
    TIM11_ICInitStructure.TIM_ICPrescaler = TIM_ICPSC_DIV1;  //ÅäÖÃÊäÈë·ÖƵ,²»·ÖƵ
    TIM11_ICInitStructure.TIM_ICFilter = 0x00;//IC1F=0000 ÅäÖÃÊäÈëÂ˲¨Æ÷ ²»Â˲¨

    TIM_ICInit(TIM12, &TIM12_ICInitStructure);
  
TIM_ITConfig(TIM12,TIM_IT_Update|TIM_IT_CC1,ENABLE);//ÔÊÐí¸üÐÂÖÐ¶Ï ,ÔÊÐíCC1IE²¶»ñÖжÏ

    TIM_Cmd(TIM12,ENABLE );  //ʹÄܶ¨Ê±Æ÷5
TIM_OC1PolarityConfig(TIM12,TIM_ICPolarity_Rising); //CC1P=0 ÉèÖÃΪÉÏÉýÑØ²¶»ñ

NVIC_InitStructure.NVIC_IRQChannel = TIM8_BRK_TIM12_IRQn;
NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority=2;//ÇÀÕ¼ÓÅÏȼ¶3
NVIC_InitStructure.NVIC_IRQChannelSubPriority =2;  //×ÓÓÅÏȼ¶3
NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;   //IRQͨµÀʹÄÜ
NVIC_Init(&NVIC_InitStructure); //¸ù¾ÝÖ¸¶¨µÄ²ÎÊý³õʼ»¯VIC¼Ä´æÆ÷¡¢

}



void TIM8_BRK_TIM12_IRQHandler(void)
{      
if(TIM_GetITStatus(TIM12, TIM_IT_CC1) != RESET)//²¶»ñ1·¢Éú²¶»ñʼþ
{
  TIM12CH1_CAPTURE_VAL+=1;////Âö³åÀÛ¼Ó.
}                     
  
TIM_ClearITPendingBit(TIM12, TIM_IT_CC1|TIM_IT_Update); //Çå³ýÖжϱê־λ
}


最佳答案

正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

1

主题

4

帖子

0

精华

新手入门

积分
10
金钱
10
注册时间
2019-8-26
在线时间
2 小时
 楼主| 发表于 2019-8-26 15:55:08 | 显示全部楼层
回复

使用道具 举报

1

主题

4

帖子

0

精华

新手入门

积分
10
金钱
10
注册时间
2019-8-26
在线时间
2 小时
 楼主| 发表于 2019-8-26 16:31:48 | 显示全部楼层
有人看吗?
回复

使用道具 举报

31

主题

2183

帖子

0

精华

资深版主

Rank: 8Rank: 8

积分
14402
金钱
14402
注册时间
2018-8-3
在线时间
1156 小时
发表于 2019-8-26 17:29:39 | 显示全部楼层
仿真去找问题   直接在中断函数打断点  Watch窗口 去看下计数值  
回复

使用道具 举报

1

主题

4

帖子

0

精华

新手入门

积分
10
金钱
10
注册时间
2019-8-26
在线时间
2 小时
 楼主| 发表于 2019-8-27 11:54:07 | 显示全部楼层
翼行园子 发表于 2019-8-26 17:29
仿真去找问题   直接在中断函数打断点  Watch窗口 去看下计数值

仿真的结果时输入捕获驱动配置不进去,配置的值不是仿真出来的值
回复

使用道具 举报

1

主题

2

帖子

0

精华

新手入门

积分
7
金钱
7
注册时间
2020-5-2
在线时间
0 小时
发表于 2020-5-11 15:36:54 | 显示全部楼层

请问问题出在什么地方啊
回复

使用道具 举报

1

主题

26

帖子

0

精华

初级会员

Rank: 2

积分
64
金钱
64
注册时间
2020-6-29
在线时间
14 小时
发表于 2020-7-9 21:10:07 | 显示全部楼层
把 TIM12CH1_CAPTURE_VAL设置为静态变量吧
回复

使用道具 举报

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

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-5-1 03:10

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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