你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。
chrome
firefox
safari
ie8及以上
ST
意法半导体官网
STM32
中文官网
ST
全球论坛
登录/注册
首页
技术问答
话题
资源
创客秀
视频
标签
积分商城
每日签到
stm定时器采集高电平数据有波动
[复制链接]
麦龙电子
提问时间:2020-3-16 20:19 /
问答
是否解决:
通过STM32F103RCT6需要采集3路方波的高电平,没有使用输入捕获采集(输入捕获是特定的引脚,比较麻烦)采集的方波的周期是7MS频率145HZ,通过定时加外部中断的方式实现了采集,由于对采集电平的精度有要求,所以在串口直接打印得到的数据上看会有最小位数为10左右的跳动。但是通过软件滤波没有实现平稳的输出。我个人觉得是采集的方式有问题,导致的数据跳动,有没有高手请教一下,通过软件来修正一下,使用了窗口滑动滤波测试效果很差,延迟比较严重。
初始化部分
复制代码
䏲壿å°è¾åºæ°æ®
赞
0
收藏
0
评论
4
分享
发布时间:2020-3-16 20:19
举报
请先
登录
后回复
4个回答
麦龙电子
回答时间:2020-3-16 20:30:22
a0a.1 32b0c
TIM2_Cap_Init(0XFFFF,100-1); //1US分辨率 计数值65535 最大60ms
TIM3_Cap_Init(0XFFFF,100-1); //1US分辨率 计数值65535 最大60ms
TIM4_Cap_Init(0XFFFF,100-1); //1US分辨率 计数值65535 最大60ms
delay_us(10);
EXTI_PA1_Init(); //配置外部中断1
EXTI_PA2_Init(); //配置外部中断2
EXTI_PA3_Init(); //配置外部中断3
unsigned short High_Time_us_PA1=0; //PA1高电平时间
unsigned short High_Time_us_PA2=0; //PA2高电平时间
unsigned short High_Time_us_PA3=0; //PA3高电平时间
void EXTI1_IRQHandler(void) //EXTI_Line1
{
if(EXTI_GetITStatus(EXTI_Line1)!= RESET)
{
if(GPIO_ReadInputDataBit(GPIOA, GPIO_Pin_1)) //上升沿中断
{
TIM2->CNT=0; //从0开始计数
TIM_Cmd(TIM2,ENABLE);//启动定时器2
}
else //下降沿中断
{
High_Time_us_PA1=TIM2->CNT;//将高电平时间读出来
TIM_Cmd(TIM2,DISABLE); //关闭定时器2等待下次测量
TIM2->CNT=0; //计数值清零
}
EXTI->PR = EXTI_Line1;//清除中断标志
}
}
void EXTI2_IRQHandler(void) //EXTI_Line2
{
if(EXTI_GetITStatus(EXTI_Line2)!= RESET)
{
if(GPIO_ReadInputDataBit(GPIOA, GPIO_Pin_2)) //上升沿中断
{
TIM3->CNT=0; //从0开始计数
TIM_Cmd(TIM3,ENABLE);//启动定时器3
}
else //下降沿中断
{
High_Time_us_PA2=TIM3->CNT;//将高电平时间读出来
TIM_Cmd(TIM3,DISABLE); //关闭定时器3等待下次测量
TIM3->CNT=0; //计数值清零
}
EXTI->PR = EXTI_Line2;//清除中断标志
}
}
void EXTI3_IRQHandler(void) //EXTI_Line3
{
if(EXTI_GetITStatus(EXTI_Line3)!= RESET)
{
if(GPIO_ReadInputDataBit(GPIOA, GPIO_Pin_3)) //上升沿中断
{
TIM4->CNT=0; //从0开始计数
TIM_Cmd(TIM4,ENABLE);//启动定时器4
}
else //下降沿中断
{
High_Time_us_PA3=TIM4->CNT;//将高电平时间读出来
TIM_Cmd(TIM4,DISABLE); //关闭定时器4等待下次测量
TIM4->CNT=0; //计数值清零
}
EXTI->PR = EXTI_Line3;//清除中断标志
}
}
复制代码
赞
0
评论
回复
支持
反对
麦龙电子
回答时间:2020-3-17 20:24:44
a1024a.1 32b0c
赞
0
评论
回复
支持
反对
麦龙电子
回答时间:2020-3-18 18:15:27
a1024a.1 32b0c
赞
0
评论
回复
支持
反对
mylovemcu
回答时间:2020-3-19 14:35:21
a0a.1 32b0c
我没有实际做过 不过感觉你这个属于正常吧 1us的分辨率 波动个7-8us很正常
再说了 输入信号的稳定性也有关系啊
赞
0
评论
回复
支持
反对
所属标签
相似问题
关于
意法半导体
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
微信公众号
手机版
快速回复
返回顶部
返回列表
再说了 输入信号的稳定性也有关系啊