OpenEdv-开源电子网

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

输入捕获求助,为什么我找不到这个东西TIM_OC1PolarityConfig(TIM5,TIM_ICPolarity_Rising)

[复制链接]

9

主题

66

帖子

0

精华

初级会员

Rank: 2

积分
147
金钱
147
注册时间
2016-7-11
在线时间
47 小时
发表于 2016-7-28 08:52:53 | 显示全部楼层 |阅读模式
1金钱
在做输入捕获我的串口显示不出来,求助!

void CATCH_Init(u16 arr,u8 pre)
{
       
        TIM_TimeBaseInitTypeDef TIM_TimeBaseInitStructure;
        TIM_ICInitTypeDef TIM_ICInitStructure;
        NVIC_InitTypeDef  NVIC_InitStructure;
       
        RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO,ENABLE);
        RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM5,ENABLE);
       
        TIM_TimeBaseInitStructure.TIM_Period=arr;
        TIM_TimeBaseInitStructure.TIM_Prescaler=pre;
        TIM_TimeBaseInitStructure.TIM_CounterMode=TIM_CounterMode_Up;
        TIM_TimeBaseInitStructure.TIM_ClockDivision=TIM_CKD_DIV1;
        TIM_TimeBaseInit(TIM5,&TIM_TimeBaseInitStructure);
       
        TIM_ICInitStructure.TIM_Channel=TIM_Channel_1;
        TIM_ICInitStructure.TIM_ICPrescaler=TIM_ICPSC_DIV1;
        TIM_ICInitStructure.TIM_ICPolarity=TIM_ICPolarity_Rising;
        TIM_ICInitStructure.TIM_ICSelection=TIM_ICSelection_DirectTI;
        TIM_ICInitStructure.TIM_ICFilter=0x0;
        TIM_ICInit(TIM5,&TIM_ICInitStructure);//③
       
        TIM_ITConfig(TIM5,TIM_IT_Update|TIM_IT_CC1,ENABLE);
       
        NVIC_InitStructure.NVIC_IRQChannel=TIM5_IRQn;
        NVIC_InitStructure.NVIC_IRQChannelCmd=ENABLE;
        NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority=2;
        NVIC_InitStructure.NVIC_IRQChannelSubPriority=2;
        NVIC_Init(&NVIC_InitStructure);
       
        TIM_Cmd(TIM5,ENABLE);
       
}

u8  TIM5CH1_CAPTURE_STA = 0;   //输入捕获状态
u16 TIM5CH1_CAPTURE_VAL;                //输入捕获值
//编写中断服务程序
void TIME_IRQ()
{
        if((TIM5CH1_CAPTURE_STA&0x80)==0)//表示表示捕获未完成
        {
                if(TIM_GetITStatus(TIM5,TIM_IT_Update)!=RESET)//表示发生时钟更新
                {
                        if((TIM5CH1_CAPTURE_STA&0x40)==1)
                        {
                                if((TIM5CH1_CAPTURE_STA&0x3F)==1)//检查第六位是否捕获到高电平,高电平的时间太长
                                {
                                        TIM5CH1_CAPTURE_STA |= 0x80;
                                        TIM5CH1_CAPTURE_VAL=0xFFFF;
                                }
                                else  TIM5CH1_CAPTURE_STA++;
                        }
                }
                if(TIM_GetITStatus(TIM5,TIM_IT_CC1)!=RESET)//发生捕获中断
                {
                        if((TIM5CH1_CAPTURE_STA&0x40)==1)//表示捕获到一个下降沿,因为前面表示捕获到了上升沿
                        {
                                TIM5CH1_CAPTURE_STA |= 0x80;//表示成功捕获到一次
                                TIM5CH1_CAPTURE_VAL=TIM_GetCapture1(TIM5);
                                TIM_OC1PolarityConfig(TIM5,TIM_ICPolarity_Rising);//设置为上升沿
                        }
                        else//捕获到一个上升沿
                        {
                                TIM5CH1_CAPTURE_STA=0;
                                TIM5CH1_CAPTURE_STA=0;
                                TIM_SetCounter(TIM5,0);
                                        TIM5CH1_CAPTURE_STA |= 0x40;//表示捕获到了上升沿
                                TIM_OC1PolarityConfig(TIM5,TIM_ICPolarity_Falling);//设置为下仙??
                        }
                }
                TIM_ClearITPendingBit(TIM5,TIM_IT_Update|TIM_IT_CC1);//清除中断标志
        }
       
}


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

使用道具 举报

351

主题

1472

帖子

12

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
8077
金钱
8077
注册时间
2015-10-15
在线时间
2915 小时
发表于 2016-7-28 18:58:17 | 显示全部楼层
(1)你是什么开发板?
(2)你是参考我们实验,然后发现串口没有数据?
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复

使用道具 举报

9

主题

66

帖子

0

精华

初级会员

Rank: 2

积分
147
金钱
147
注册时间
2016-7-11
在线时间
47 小时
 楼主| 发表于 2016-7-29 09:44:13 | 显示全部楼层
openedvadmin 发表于 2016-7-28 18:58
(1)你是什么开发板?
(2)你是参考我们实验,然后发现串口没有数据?

对啊,我用的精英版的开发板,参考了实验,串口没有数据
回复

使用道具 举报

9

主题

66

帖子

0

精华

初级会员

Rank: 2

积分
147
金钱
147
注册时间
2016-7-11
在线时间
47 小时
 楼主| 发表于 2016-7-29 09:44:40 | 显示全部楼层
openedvadmin 发表于 2016-7-28 18:58
(1)你是什么开发板?
(2)你是参考我们实验,然后发现串口没有数据?

上面是我关于定时器的代码,主函数还有一个关于LED显示的代码
回复

使用道具 举报

9

主题

66

帖子

0

精华

初级会员

Rank: 2

积分
147
金钱
147
注册时间
2016-7-11
在线时间
47 小时
 楼主| 发表于 2016-7-29 09:44:57 | 显示全部楼层
openedvadmin 发表于 2016-7-28 18:58
(1)你是什么开发板?
(2)你是参考我们实验,然后发现串口没有数据?

还有按键代码
回复

使用道具 举报

351

主题

1472

帖子

12

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
8077
金钱
8077
注册时间
2015-10-15
在线时间
2915 小时
发表于 2016-7-29 10:45:17 | 显示全部楼层
你测试输入捕获实验没有输出?
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复

使用道具 举报

9

主题

66

帖子

0

精华

初级会员

Rank: 2

积分
147
金钱
147
注册时间
2016-7-11
在线时间
47 小时
 楼主| 发表于 2016-7-29 11:12:45 | 显示全部楼层
openedvadmin 发表于 2016-7-29 10:45
你测试输入捕获实验没有输出?

串口没有显示数据,我也不知道哪错了
回复

使用道具 举报

351

主题

1472

帖子

12

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
8077
金钱
8077
注册时间
2015-10-15
在线时间
2915 小时
发表于 2016-7-29 13:17:53 | 显示全部楼层
那不应该的,你仔细看看是不是哪里没有连对。。仔细看看手册或者视频。
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复

使用道具 举报

9

主题

66

帖子

0

精华

初级会员

Rank: 2

积分
147
金钱
147
注册时间
2016-7-11
在线时间
47 小时
 楼主| 发表于 2016-7-29 14:21:10 | 显示全部楼层
openedvadmin 发表于 2016-7-29 13:17
那不应该的,你仔细看看是不是哪里没有连对。。仔细看看手册或者视频。

我都看了二次。没有发现什么问题啊,就不知道怎么办了
回复

使用道具 举报

351

主题

1472

帖子

12

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
8077
金钱
8077
注册时间
2015-10-15
在线时间
2915 小时
发表于 2016-7-29 16:46:45 | 显示全部楼层
我感觉很奇怪,你这代码都不是我们实验代码。
你的中断服务函数,也不是定时器中断服务函数,,,怎么会正常? 我搞不懂呢。。。
你拿了我们代码测试了?我是问我们代码。。。你自己写一个函数,从哪里调用这个处理函数呢?我找不到。 void TIME_IRQ()这个函数是中断服务函数?
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复

使用道具 举报

9

主题

66

帖子

0

精华

初级会员

Rank: 2

积分
147
金钱
147
注册时间
2016-7-11
在线时间
47 小时
 楼主| 发表于 2016-7-29 17:21:08 | 显示全部楼层
openedvadmin 发表于 2016-7-29 16:46
我感觉很奇怪,你这代码都不是我们实验代码。
你的中断服务函数,也不是定时器中断服务函数,,,怎么会正 ...

你们的代码可以,那是我自己写的,所以不懂
回复

使用道具 举报

30

主题

1170

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1993
金钱
1993
注册时间
2016-2-16
在线时间
527 小时
发表于 2016-7-29 20:06:00 | 显示全部楼层
void TIME_IRQ()
这个函数就是你的中断函数???你改s的启动文件了??
中断函数名都是固定的,除非修改s文件。
回复

使用道具 举报

7

主题

102

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
299
金钱
299
注册时间
2016-4-10
在线时间
48 小时
发表于 2016-7-29 23:13:07 | 显示全部楼层
你改成大容量的启动文件试试  我没看程序  只看啦问题
回复

使用道具 举报

9

主题

66

帖子

0

精华

初级会员

Rank: 2

积分
147
金钱
147
注册时间
2016-7-11
在线时间
47 小时
 楼主| 发表于 2016-8-1 08:31:42 | 显示全部楼层
憨厚诚实大叔 发表于 2016-7-29 20:06
void TIME_IRQ()
这个函数就是你的中断函数???你改s的启动文件了??
中断函数名都是固定的,除非修改 ...

哦哦,这个小弟刚学没注意到,小弟先去看看原子哥代码去,不会
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-6-8 22:25

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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