OpenEdv-开源电子网

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

STM32F103RE引脚复用功能配置

[复制链接]

3

主题

12

帖子

0

精华

新手上路

积分
27
金钱
27
注册时间
2022-8-22
在线时间
6 小时
发表于 2024-8-5 22:55:38 | 显示全部楼层 |阅读模式
5金钱
想将STM32F103RE的PB1复用 为TIM3-CH4,作为计时器输入捕获,下面的配置进不了计时更新中断和捕获中断,请大佬帮看看问题出在哪呢?
void P_INIT(void)
    NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);//设置系统中断优先级分组2
    RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO, ENABLE);

    GPIO_InitTypeDef GPIO_InitStructure;
    NVIC_InitTypeDef NVIC_InitStructure;   
    TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure;  
    TIM_ICInitTypeDef TIM_ICInitStructure;

    RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB,ENABLE);   
    RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM3, ENABLE);//TIM3时钟使能  
    //端口初始化,输入端口
    GPIO_InitStructure.GPIO_Pin = GPIO_Pin_1;
    GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;   //复用浮空
    GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
    GPIO_Init(GPIOB, &GPIO_InitStructure);//初始化
    GPIO_SetBits(GPIOB,GPIO_Pin_1);

    TIM_TimeBaseStructure.TIM_Period=(10000-1);   //设定计数器自动重装值 最大10ms溢出  
    TIM_TimeBaseStructure.TIM_Prescaler=(72-1);  //预分频器,1M的计数频率,1us加1.   
    TIM_TimeBaseStructure.TIM_ClockDivision=TIM_CKD_DIV1;   //
    TIM_TimeBaseStructure.TIM_CounterMode=TIM_CounterMode_Up; //向上计数模式
    TIM_TimeBaseInit(TIM3,&TIM_TimeBaseStructure);

    //初始化TIM3输入捕获参数
    TIM_ICInitStructure.TIM_Channel = TIM_Channel_4; //选择输入端 IC4映射到TI4上
    TIM_ICInitStructure.TIM_ICPolarity = TIM_ICPolarity_Rising;    //上升沿捕获,下降沿捕获
    TIM_ICInitStructure.TIM_ICSelection = TIM_ICSelection_DirectTI; //映射到TI4上(直通)
    TIM_ICInitStructure.TIM_ICPrescaler = TIM_ICPSC_DIV1;     //配置输入分频,不分频
    TIM_ICInitStructure.TIM_ICFilter = 0x03;    //  8个定时器时钟周期滤波
    TIM_ICInit(TIM3, &TIM_ICInitStructure);     //初始化定时器3输入捕获通道

    NVIC_InitStructure.NVIC_IRQChannel = TIM3_IRQn;  //TIM3捕获中断
    NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority=2;//抢占优先级0
    NVIC_InitStructure.NVIC_IRQChannelSubPriority =2;        //子优先级0
    NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;            //IRQ通道使能
    NVIC_Init(&NVIC_InitStructure);    //初始化NVIC寄存器

    TIM_ITConfig(TIM3,TIM_IT_Update|TIM_IT_CC4,ENABLE);//允许更新中断,允许CC4IE捕获中断  
    TIM_Cmd(TIM3,ENABLE );          //使能定时器3

}

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

使用道具 举报

11

主题

2103

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
4584
金钱
4584
注册时间
2015-1-10
在线时间
573 小时
发表于 2024-8-6 10:47:07 | 显示全部楼层
没看到你的引脚复用配置啊
回复

使用道具 举报

3

主题

12

帖子

0

精华

新手上路

积分
27
金钱
27
注册时间
2022-8-22
在线时间
6 小时
 楼主| 发表于 2024-8-6 20:14:38 | 显示全部楼层
本帖最后由 afu1117 于 2024-8-6 20:21 编辑
阿侑kevin 发表于 2024-8-6 10:47
没看到你的引脚复用配置啊

就是不知道F1的引脚复用该如何配置,函数GPIO_PinAFConfig在F1里不能用,我只是开启了复用时钟,然后配置TIM3并将引脚按复用要求设置为浮空输入
问题是PB1引脚有多个复用功能,怎么设置复用哪一个呢?

截图.jpg
回复

使用道具 举报

1

主题

24

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
281
金钱
281
注册时间
2022-4-13
在线时间
33 小时
发表于 2024-8-7 08:35:44 | 显示全部楼层
afu1117 发表于 2024-8-6 20:14
就是不知道F1的引脚复用该如何配置,函数GPIO_PinAFConfig在F1里不能用,我只是开启了复用时钟,然后配置 ...

你参考一下这位博主的文章https://blog.csdn.net/weixin_53944340/article/details/136028141
回复

使用道具 举报

11

主题

2103

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
4584
金钱
4584
注册时间
2015-1-10
在线时间
573 小时
发表于 2024-8-7 13:16:52 | 显示全部楼层
afu1117 发表于 2024-8-6 20:14
就是不知道F1的引脚复用该如何配置,函数GPIO_PinAFConfig在F1里不能用,我只是开启了复用时钟,然后配置 ...

库里有单独的函数
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2024-11-22 06:46

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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