OpenEdv-开源电子网

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

谁有stm32f429库函数版ab相编码器测电机转速的代码,可以发下吗?

[复制链接]

2

主题

10

帖子

0

精华

新手上路

积分
30
金钱
30
注册时间
2015-4-8
在线时间
11 小时
发表于 2019-11-22 01:01:14 | 显示全部楼层 |阅读模式
20金钱
发现完整的429库函数例子好难找,网上都是片段,云里雾里,有的坛友,能发下吗?
如果能说明原理就更好了,谢谢

最佳答案

查看完整内容[请看2#楼]

自己解决了,贴编码器设置代码 void TIM3_EncoderConfig(void){ // 通道GPIO初始化 // 初始化外设时钟 RCC_AHB1PeriphClockCmd(ENCODER3_GPIO_CLK, ENABLE); // GPIO初始化结构体 GPIO_InitTypeDef GPIO_InitStructure; GPIO_StructInit(&GPIO_InitStructure); GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF; GPIO_InitStructure.GPIO_OType = GPIO_OType_OD; GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_ ...
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

2

主题

10

帖子

0

精华

新手上路

积分
30
金钱
30
注册时间
2015-4-8
在线时间
11 小时
 楼主| 发表于 2019-11-22 01:01:15 | 显示全部楼层
自己解决了,贴编码器设置代码
void TIM3_EncoderConfig(void){
        // 通道GPIO初始化
        // 初始化外设时钟
        RCC_AHB1PeriphClockCmd(ENCODER3_GPIO_CLK, ENABLE);       
        // GPIO初始化结构体
        GPIO_InitTypeDef GPIO_InitStructure;
        GPIO_StructInit(&GPIO_InitStructure);
        GPIO_InitStructure.GPIO_Mode         = GPIO_Mode_AF;
        GPIO_InitStructure.GPIO_OType = GPIO_OType_OD;                       
        GPIO_InitStructure.GPIO_PuPd         = GPIO_PuPd_DOWN;                       
        GPIO_InitStructure.GPIO_Speed = GPIO_Speed_100MHz;
        GPIO_InitStructure.GPIO_Pin   = ENCODER3_PIN1 | ENCODER3_PIN2;
        GPIO_Init(ENCODER3_GPIO_PORT, &GPIO_InitStructure);
        // 连接到复用
        GPIO_PinAFConfig(ENCODER3_GPIO_PORT, ENCODER3_PINSOURCE1, ENCODER3_ICPWM_AF);
        GPIO_PinAFConfig(ENCODER3_GPIO_PORT, ENCODER3_PINSOURCE2, ENCODER3_ICPWM_AF);
       
        // 配置时基
        TIM_TimeBaseInitTypeDef TIM3_TimeBaseStructure;       
        TIM_TimeBaseStructInit(&TIM3_TimeBaseStructure);
        RCC_APB1PeriphClockCmd(ENCODER3_TIM3_CLK, ENABLE);       
        // 180M 90 x 2 溢出时间 = (ARR+1)(PSC+1)/TCLK, 180MHz/180=1MHz, F = TIM_CLK/{(ARR+A)*(PSC+1)}
        TIM3_TimeBaseStructure.TIM_Prescaler                = 0;                                                                                       
        TIM3_TimeBaseStructure.TIM_Period                         = 0xFFFFFFFF;                                                       
        TIM3_TimeBaseStructure.TIM_CounterMode         = TIM_CounterMode_Up;                
        TIM3_TimeBaseStructure.TIM_RepetitionCounter         = 0x0;                                                       
        TIM3_TimeBaseStructure.TIM_ClockDivision                        = TIM_CKD_DIV1;                               
        TIM_TimeBaseInit(ENCODER3_TIM3, &TIM3_TimeBaseStructure);
               
        // 配置编码器
        // A
        TIM_ICInitTypeDef TIM3_IC1InitStructure;
        TIM_ICStructInit(&TIM3_IC1InitStructure);
        TIM3_IC1InitStructure.TIM_Channel                 = ENCODER3_IC1_CHANNEL;                                        // 设置捕获通道
        TIM3_IC1InitStructure.TIM_ICFilter                 = 0x0;                                                                                                        // 不滤波
        // TIM3_IC1InitStructure.TIM_ICPolarity         = TIM_ICPolarity_BothEdge;         // 这里其实由TIM_EncoderInterfaceConfig决定的,是否配置都不影响
        TIM3_IC1InitStructure.TIM_ICPrescaler = TIM_ICPSC_DIV1;                                                               
        TIM3_IC1InitStructure.TIM_ICSelection = TIM_ICSelection_DirectTI;                                       
        TIM_ICInit(ENCODER3_TIM3, &TIM3_IC1InitStructure);
               
        TIM_EncoderInterfaceConfig(ENCODER3_TIM3, TIM_EncoderMode_TI1, TIM_ICPolarity_Rising, TIM_ICPolarity_Rising);
       
        // 使能自动重装载的预装载寄存器允许位,控制ARR值改变后是否直接更新,还是到下一个周期开始更新
        TIM_ARRPreloadConfig(ENCODER3_TIM3, ENABLE); // DISABLE
       

  // 重置计数器
  TIM_SetCounter(ENCODER3_TIM3, 0);
        // 使能定时器
  TIM_Cmd(ENCODER3_TIM3, ENABLE);
       
       

}
回复

使用道具 举报

1

主题

5

帖子

0

精华

初级会员

Rank: 2

积分
75
金钱
75
注册时间
2017-12-27
在线时间
20 小时
发表于 2020-1-17 13:31:14 | 显示全部楼层
cwh 发表于 2019-11-30 15:27
自己解决了,贴编码器设置代码
void TIM3_EncoderConfig(void){
        // 通道GPIO初始化

经过验证,可用,非常感谢。
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165475
金钱
165475
注册时间
2010-12-1
在线时间
2115 小时
发表于 2020-1-19 00:50:47 | 显示全部楼层
cwh 发表于 2019-11-30 15:27
自己解决了,贴编码器设置代码
void TIM3_EncoderConfig(void){
        // 通道GPIO初始化

谢谢分享
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-5-11 09:24

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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