cube基本配置,外设开启编码器,串口2

可能大家在设置的时候有这个错误

错误:error:  #20: identifier "TIM_ICPOLARITY_BOTHEDGE" is undefined

意思是,高级、通用定时器不能用BothEdge,只有基本定时器才能用BothEdge

针对具体的芯片举几个例子:基本都是大同小异

F4系列:

   /* 编码器初始化及使能编码器模式 */
ENCODER_TIMx_Init();
HAL_TIM_Encoder_Start(&htimx_Encoder, TIM_CHANNEL_ALL);
 /* 获取捕获值并计算转速 */

       CaptureNumber = ( int16_t )__HAL_TIM_GET_COUNTER(&htimx_Encoder)+OverflowCount*;
printf("输入捕获值:%d \n",CaptureNumber);
// 4 : 使用定时器编码器接口捕获AB相的上升沿和下降沿,一个脉冲*4.
// 11:编码器线数(转速一圈输出脉冲数)
// 34:电机减数比,内部电机转动圈数与电机输出轴转动圈数比,即减速齿轮比
printf("电机实际转动速度:%0.2f(圈/s)\n",(float)CaptureNumber///);
__HAL_TIM_SET_COUNTER(&htimx_Encoder,);

F1系列  输出方向与速度

 /**
* 函数功能: 系统滴答定时器中断回调函数
* 输入参数: 无
* 返 回 值: 无
* 说 明: 每发生一次滴答定时器中断进入该回调函数一次
*/
void HAL_SYSTICK_Callback(void)
{
static uint32_t count=;
if(start_flag) // 等待脉冲输出后才开始计时
{
time_count++; // 每1ms自动增一
if(time_count==) // 1s
{
/* Get the current direction */
uwDirection = __HAL_TIM_IS_TIM_COUNTING_DOWN(&htimx_Encoder);
CaptureNumber=__HAL_TIM_GET_COUNTER(&htimx_Encoder); printf("当前编码器定时器计数方向:%d\n",uwDirection);
printf("输入捕获值:%d\n",CaptureNumber);
printf("1s内编码器计数值:%d\n",CaptureNumber>=count?CaptureNumber-count:CaptureNumber+-count); // 11:编码器线数(转速一圈输出脉冲数)
// 34:电机减数比,内部电机转动圈数与电机输出轴转动圈数比,即减速齿轮比
printf("电机实际转动速度:%0.2f(圈/s)\n",(float)(CaptureNumber>=count?CaptureNumber-count:CaptureNumber+-count)///);
count=CaptureNumber;
time_count=;
}
}
}

函数应用:

这个函数很好用,在电机控制时使用很多

__HAL_TIM_SET_COUNTER()    可以设置计数初值为需要的值,默认是0

增量式编码器四倍频:

确定编码器是多少线的,假设定时器分频为0;  则定时器计数为390*4 = 1560 

中断配置:编码器模式是可以不需要中断的,主要是定时器1和8的配置

注意:这个是我实际遇到的问题,遇到的可以参考

编码器是否是OC(集电极开路)门,接了上拉没有,没有需要接上啦,如果不使用Z信号,需要把外部中断清零的那部分代码去掉

标准库配置可以参考:https://blog.csdn.net/wang328452854/article/details/50579832

STM32 HAL库学习系列第5篇 定时器TIM---编码器接口模式配置的更多相关文章

  1. STM32 HAL库学习系列第6篇---定时器TIM 级联配置

    应用情景 使用定时器配置编码器模式,发现STM32只有两个定时器是32位,16位的测量值不够用,发现是可以使用两个16位定时器级联为32位的. 我是在使用编码器计数电机转速时使用,但是最终实现的效果不 ...

  2. STM32 HAL库学习系列第7篇---定时器TIM 输入捕获功能

    测量脉冲宽度或者测量频率   基本方法 1.设置TIM2 CH1为输入捕获功能:  2.设置上升沿捕获:  3.使能TIM2 CH1捕获功能:  4.捕获到上升沿后,存入capture_buf[0], ...

  3. STM32 HAL库学习系列第4篇 定时器TIM----- 开始定时器与PWM输出配置

    基本流程: 1.配置定时器 2.开启定时器 3.动态改变pwm输出,改变值  HAL_TIM_PWM_Start(&htim4, TIM_CHANNEL_1); 函数总结: __HAL_TIM ...

  4. STM32 HAL库学习系列第8篇---回调函数总结

    普通函数与回调函数的区别:就是ST将中断封装,给使用者的API,就是标准库的中断函数 对普通函数的调用: 调用程序发出对普通函数的调用后,程序执行立即转向被调用函数执行,直到被调用函数执行完毕后,再返 ...

  5. STM32 HAL库学习系列第1篇 ADC配置 及 DAC配置

    ADC工作均为非阻塞状态 轮询模式 中断模式 DMA模式 库函数: HAL_StatusTypeDef HAL_ADC_Start(ADC_HandleTypeDef* hadc);//轮询模式,需放 ...

  6. STM32 HAL库学习系列第3篇 常使用的几种延时方式

    1   自带的hal_delay 函数    毫秒级延迟 void HAL_Delay(__IO uint32_t Delay) { uint32_t tickstart = HAL_GetTick( ...

  7. STM32 HAL库学习系列第2篇 GPIO配置

    GPIO 库函数 基本就是使用以下几个函数 GPIO_PinState HAL_GPIO_ReadPin(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin); void H ...

  8. STM32 HAL库学习系列---定时器TIM 输入捕获功能

    基本方法 1.设置TIM2 CH1为输入捕获功能: 2.设置上升沿捕获: 3.使能TIM2 CH1捕获功能: 4.捕获到上升沿后,存入capture_buf[0],改为捕获下降沿: 5.捕获到下降沿后 ...

  9. 【书籍连载】《STM32 HAL 库开发实战指南—基于F7》-第一章

    从今天起,每天开始连载一章<STM32 HAL 库开发实战指南—基于F7>.欢迎各位阅读.点评.学习. 第1章  如何使用本书 1.1  本书的参考资料 本书参考资料为:<STM32 ...

随机推荐

  1. YII+DWZ三级城市联动挂件

    挂件PHP文件 class CountryCityCombox extends RXWidget { public $provinceId = 2; public $cityId = 3687; pu ...

  2. Zabbix 3.0 for Ubuntu 14.04 LTS 安装

    准备工作 apt-get install gettextapt-get install unzipapt-get install rar一.安装主程序 代码: 全选wget http://repo.z ...

  3. “小小科技女神”与微软DigiGirlz Day的约会

    上周五在微软中国上海科技园举行的微软科技女生夏令营终于在一天“忙碌的轻松中”,伴随着师生和工程师们的欢笑结束了. 本次的微软科技女生夏令营一共有来自上海闵行区七宝中学.莘庄中学和闵行中学的共50名高中 ...

  4. Python学习---Django的验证码

    [更多参考] http://www.cnblogs.com/wupeiqi/articles/4786251.html

  5. [Assignment] C++1

    作业要求: 给出圆半径求面积. 使用cin和cout.用多个源文件处理函数. →代码在这里

  6. codeforces 414D Mashmokh and Water Tanks

    codeforces 414D Mashmokh and Water Tanks 题意 题解 \(a_i\):第 \(i\) 层的结点个数. \(b_i\):第 \(i\) 层初始有水的结点个数. 如 ...

  7. U-Mail:邮件营销如何大量获取并筛选有效地址

    工欲善其事必先利其器,在所有的邮件推广中,最基础的工作就是收集到足够多的有效邮箱地址,俗话说韩信将兵多多益善,邮箱地址越多,也就意味着潜在的转化为消费者的数量众多,但是如果大量滥竽充数的地址被搜罗进来 ...

  8. Mac OS Yosemite(10.10.3)系统下环境配置

    /etc/bash_profile #Java export JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk1.7.0_65.jdk/Contents/ ...

  9. css根据屏幕大小切换样式

    首先html head之间加入: <meta content="width=device-width, initial-scale=1.0, minimum-scale=1.0, ma ...

  10. hdu-3333 Turing Tree 离线区间+树状数组(区间不同数的和)

    题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=3333 题目大意: 给出一数组,以及m个查询区间,每次查询该区间不同数字的和.相同数字只加一次. 解题 ...