OpenEdv-开源电子网

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

STM32输入捕获求教??????

[复制链接]

5

主题

19

帖子

0

精华

初级会员

Rank: 2

积分
103
金钱
103
注册时间
2012-12-4
在线时间
14 小时
发表于 2013-1-16 21:17:53 | 显示全部楼层 |阅读模式
各位大侠:

        我用stm32定时器8输出PWM,定时器1设置成输入捕获,为什么每个PWM脉冲定时器1都要进中断,
我想设计成定时器1计数一定数量的脉冲个数后,再进中断执行,可以吗??


/* -----------------------------------------------------------------------/
TIM1 Configuration: 输入捕获
/ -----------------------------------------------------------------------*/
//--1-----计数器基本配置---------//
TIM_TimeBaseStructure.TIM_Period = (0x9000);//设置下一个更新事件装入活动的自动重装载寄存器周期的值
TIM_TimeBaseStructure.TIM_Prescaler = (0);//设置TIMx时钟频率除数的预分频值10k
TIM_TimeBaseStructure.TIM_ClockDivision = TIM_CKD_DIV1;//设置时钟分割
TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up;//选择计数器模式
TIM_TimeBaseStructure.TIM_RepetitionCounter = 0x0;
TIM_TimeBaseInit(TIM1, &TIM_TimeBaseStructure);
//--2-----通道配置---------//
TIM_ICInitStructure.TIM_Channel = TIM_Channel_1;//通道选择 
TIM_ICInitStructure.TIM_ICPolarity = TIM_ICPolarity_Rising;//下降沿 
TIM_ICInitStructure.TIM_ICSelection = TIM_ICSelection_DirectTI;//管脚与寄存器对应关系 
TIM_ICInitStructure.TIM_ICPrescaler = TIM_ICPSC_DIV1;//分频器 
TIM_ICInitStructure.TIM_ICFilter = 0x0;  //滤波设置,经历几个周期跳变认定波形稳定0x0~0xF 
TIM_ICInit(TIM1, &TIM_ICInitStructure);  //初始化 
// TIM_PWMIConfig(TIM1, &TIM_ICInitStructure);     //根据参数配置TIM外设信息
//--3-----时钟启动配置---------//
TIM_ITRxExternalClockConfig(TIM1,TIM_TS_ETRF); 
// TIM_ETRClockMode2Config(TIM1, TIM_ExtTRGPSC_OFF, TIM_ExtTRGPolarity_NonInverted, 0);
// TIM_SelectInputTrigger(TIM1, TIM_TS_ETRF); //选择输入触发源为外部触发 
TIM_SelectSlaveMode(TIM1, TIM_SlaveMode_External1);//触发方式 
TIM_SelectMasterSlaveMode(TIM1, TIM_MasterSlaveMode_Enable); //启动定时器的被动触发 
TIM_ITConfig(TIM1, TIM_IT_CC1, ENABLE);  //打开中断 
TIM_Cmd(TIM1, DISABLE); //启动TIM1 

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

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2013-1-16 21:24:23 | 显示全部楼层
不可以,你这种,干脆用外部计数模式了。 
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

5

主题

19

帖子

0

精华

初级会员

Rank: 2

积分
103
金钱
103
注册时间
2012-12-4
在线时间
14 小时
 楼主| 发表于 2013-1-16 21:29:45 | 显示全部楼层
回复【2楼】正点原子:
---------------------------------
我本来是要把定时器1的4个通道都设置成输入捕获的,用外部计数模式也可以实现吗??
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2013-1-16 21:32:29 | 显示全部楼层
你的要求是捕获一定数量的脉冲才中断,这就必须用外部计数模式了。
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

5

主题

19

帖子

0

精华

初级会员

Rank: 2

积分
103
金钱
103
注册时间
2012-12-4
在线时间
14 小时
 楼主| 发表于 2013-1-16 21:36:44 | 显示全部楼层
回复【4楼】%E6%AD%A3%E7%82%B9%E5%8E%9F%E5%AD%90:
---------------------------------
我试了很多方式都不行啊;是不是外部计数模式仅设置如下就行呢???

设置如下:
但是不进中断啊??这是为什么啊??

/* -----------------------------------------------------------------------/
NVIC Configuration: 
/ -----------------------------------------------------------------------*/
//--1-----定时器1中断配置---------//
NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0; 
NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0; 
NVIC_InitStructure.NVIC_IRQChannel = TIM1_UP_IRQn;
NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;//启动此通道的中断 
NVIC_Init(&NVIC_InitStructure);

/* -----------------------------------------------------------------------/
TIM1 Configuration: 
/ -----------------------------------------------------------------------*/
//--1-----计数器基本配置---------//
#if 1
TIM_TimeBaseStructure.TIM_Period = (0x9000);//设置下一个更新事件装入活动的自动重装载寄存器周期的值
TIM_TimeBaseStructure.TIM_Prescaler = (0);//设置TIMx时钟频率除数的预分频值10k
TIM_TimeBaseStructure.TIM_ClockDivision = TIM_CKD_DIV1;//设置时钟分割
TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up;//选择计数器模式
TIM_TimeBaseStructure.TIM_RepetitionCounter = 0x0;
TIM_TimeBaseInit(TIM1, &TIM_TimeBaseStructure);
#endif
TIM_ITRxExternalClockConfig(TIM1,TIM_TS_ETRF);
TIM_ETRClockMode2Config(TIM1, TIM_ExtTRGPSC_OFF, TIM_ExtTRGPolarity_NonInverted, 0);
TIM_SetCounter(TIM1,0);
TIM_ITConfig(TIM1, TIM_IT_Update, ENABLE);  //打开中断 
TIM_Cmd(TIM1, DISABLE); //启动TIM1 




void TIM1_UP_IRQHandler(void)
{
if (TIM_GetITStatus(TIM1, TIM_IT_Update) != RESET)
{
TIM_ClearITPendingBit(TIM1, TIM_IT_Update);
PWMcount1++;
}
}

回复 支持 反对

使用道具 举报

5

主题

19

帖子

0

精华

初级会员

Rank: 2

积分
103
金钱
103
注册时间
2012-12-4
在线时间
14 小时
 楼主| 发表于 2013-1-16 21:46:10 | 显示全部楼层
回复【4楼】正点原子:
---------------------------------
原子哥:
      请问:如果设置了外部计数模式后,是不是一个定时器只能计数一路PWM了???
回复 支持 反对

使用道具 举报

5

主题

19

帖子

0

精华

初级会员

Rank: 2

积分
103
金钱
103
注册时间
2012-12-4
在线时间
14 小时
 楼主| 发表于 2013-1-16 22:03:56 | 显示全部楼层
各位大哥:

     帮我看看上面的代码有上面问题吗??

小弟万分感谢啊!!!!!
回复 支持 反对

使用道具 举报

5

主题

19

帖子

0

精华

初级会员

Rank: 2

积分
103
金钱
103
注册时间
2012-12-4
在线时间
14 小时
 楼主| 发表于 2013-1-16 22:13:29 | 显示全部楼层
各位大哥: 

       有什么方式可以实现用一个定时器的四个通道来计数4个不同的外部脉冲吗??
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2013-1-16 23:59:00 | 显示全部楼层
回复【6楼】wh2008:
---------------------------------
是的
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

108

主题

1433

帖子

2

精华

论坛大神

Rank: 7Rank: 7Rank: 7

积分
2234
金钱
2234
注册时间
2012-4-30
在线时间
7 小时
发表于 2013-1-17 09:49:15 | 显示全部楼层
回复【8楼】wh2008:
---------------------------------
肯定可以撒,这个是寄存器方式的实现配置,你可以借鉴一下。
http://www.openedv.com/posts/list/8055.htm
回复 支持 反对

使用道具 举报

7

主题

21

帖子

0

精华

初级会员

Rank: 2

积分
69
金钱
69
注册时间
2014-5-7
在线时间
0 小时
发表于 2015-3-27 15:14:30 | 显示全部楼层
回复【2楼】正点原子:
---------------------------------
什么是外部计数模式?是指用定时器对外部脉冲信号计数么?
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2015-3-27 23:10:02 | 显示全部楼层
回复【11楼】青玉更落星雨:
---------------------------------
是的
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-6-24 11:25

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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