打印
[MM32软件]

MM32F003TW输入捕获不成功

[复制链接]
2270|4
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
uccms|  楼主 | 2021-6-3 15:14 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
TI, ni, IO, pi, ic, struct
本帖最后由 uccms 于 2021-6-4 09:07 编辑
    GPIO_InitTypeDef GPIO_InitStruct;
    TIM_TimeBaseInitTypeDef TIM_TimeBaseInitStruct;
    TIM_ICInitTypeDef TIM2_ICInitStruct;
    NVIC_InitTypeDef NVIC_InitStruct;
   
    RCC_AHBPeriphClockCmd(RCC_AHBPeriph_GPIOB, ENABLE);
    RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM2, ENABLE);    // 时钟使能
   
    GPIO_InitStruct.GPIO_Speed = GPIO_Speed_50MHz;    // 速度为50MHz
    GPIO_InitStruct.GPIO_Mode = GPIO_Mode_IPU;//GPIO_Mode_IN_FLOATING;
    GPIO_InitStruct.GPIO_Pin = GPIO_Pin_6;
    GPIO_Init(GPIOB, &GPIO_InitStruct);
    GPIO_WriteBit(GPIOB, GPIO_Pin_6, Bit_SET);
   
    GPIO_PinAFConfig(GPIOB, GPIO_Pin_6, GPIO_AF_4);    // TIM2_CH1
   
    TIM_TimeBaseInitStruct.TIM_Period = arr;    // 设置自动重装载值
    TIM_TimeBaseInitStruct.TIM_Prescaler = psc;    // 设置定时器预分频值
    TIM_TimeBaseInitStruct.TIM_ClockDivision = TIM_CKD_DIV1;    // 设置时钟分频
    TIM_TimeBaseInitStruct.TIM_CounterMode = TIM_CounterMode_Up;    // 计数模式
    TIM_TimeBaseInitStruct.TIM_RepetitionCounter = 0;    // 重复计数器的值
    TIM_TimeBaseInit(TIM2, &TIM_TimeBaseInitStruct);    // 初始化定时器
   
    //输入捕获参数初始化
    TIM2_ICInitStruct.TIM_Channel = TIM_Channel_1;    //选择输入端 IC1映射到TI1上
    TIM2_ICInitStruct.TIM_ICPolarity = TIM_ICPolarity_Falling;    // 边沿捕获
    TIM2_ICInitStruct.TIM_ICSelection = TIM_ICSelection_DirectTI;    // 映射到TI1上
    TIM2_ICInitStruct.TIM_ICPrescaler = TIM_ICPSC_DIV1;    // 配置输入分频
    TIM2_ICInitStruct.TIM_ICFilter = 0x00;    //配置输入滤波器
    TIM_ICInit(TIM2, &TIM2_ICInitStruct);
   
    //TIM_SetCounter(TIM2, 0);
   
    NVIC_InitStruct.NVIC_IRQChannel = TIM2_IRQn;    // 中断源
    NVIC_InitStruct.NVIC_IRQChannelPriority = 0;    // 优先级
    NVIC_InitStruct.NVIC_IRQChannelCmd = ENABLE;    // 中断通道使能
    NVIC_Init(&NVIC_InitStruct);
   
    TIM_ClearFlag(TIM2, TIM_FLAG_Update | TIM_FLAG_CC1);    // 清除中断标志位
    TIM_ITConfig(TIM2, TIM_IT_Update | TIM_IT_CC1 ,ENABLE);    // 使能定时器中断
   
    TIM_Cmd(TIM2, ENABLE);    //使能TIMx外设


定时器溢出中断正常,但是捕获中断一直没反应。不知哪里问题,帮忙看看,谢谢。

使用特权

评论回复
沙发
weifeng90| | 2021-6-3 21:12 | 只看该作者
看程序没问题啊

使用特权

评论回复
板凳
uccms|  楼主 | 2021-6-3 21:53 | 只看该作者
本帖最后由 uccms 于 2021-6-3 21:56 编辑

研究了1天了,还是没找出问题,直接用寄存器写,也不行,不知问题出在哪,买的最小系统板和自己设计的产品板子都试了,还是不行。,有没大佬有板子的试试,给点建议。谢谢哇!

使用特权

评论回复
地板
uccms|  楼主 | 2021-6-4 10:38 | 只看该作者
原来这句写错了
GPIO_PinAFConfig(GPIOB, GPIO_Pin_6, GPIO_AF_4);    // TIM2_CH1
正确的
GPIO_PinAFConfig(GPIOB, GPIO_PinSource6, GPIO_AF_4);    // TIM2_CH1
搞死了。。。

使用特权

评论回复
5
guijial511| | 2021-6-7 20:54 | 只看该作者
哈哈,犯了低级错误啊这是。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

1

主题

6

帖子

0

粉丝