1、基于STM32开发简易运动控制卡 开发者:JasonLin 日期:2014/8/2 STM32定时器功能介绍 定时器 计数分辨率 计数类型 预分频系数 DMA请求 捕获/比较通道 编码器 接口 PWM 生成 TIM1 16位 up/down /both 1-65536 yes 4 yes yes TIM8 16位 up/down /both 1-65536 yes 4 yes yes TIM2 16位 up/down /both 1-65536 yes 4 yes yes TIM3 16位 up/down/
2、 both 1-65536 yes 4 yes yes TIM4 16位 up/down /both 1-65536 yes 4 yes yes TIM5 16位 up/down /both 1-65536 yes 4 yes yes TIM6 16位 up 1-65536 yes 0 no no TIM7 16位 up 1-65536 yes 0 no no TIM1和TIM8为高级定时器 TIM6和TIM7为基本定时器 TIM2、TIM3、TIM4和TIM5为通用定时器 ////////////////
3、////////////////////////////////////////////////////////////////////////////////////////////////////////////////// STM32定时器的通道/引脚分配 定时器 TIM1 TIM2 TIM3 TIM4 TIM5 TIM8 CH1引脚 PA8 PA0 PA6 PB6 PA0 PC6 CH2引脚 PA9 PA1 PA7 PB7 PA1 PC7 CH3引脚 PA10 PA2 PB0 PB8 PA2 PC8 CH4引脚 PA11
4、PA3 PB1 PB9 PA3 PC9 ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// STM32定时器的通道/引脚重映射 ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////
5、////////////// TIM1和TIM8定时器的功能包括: ● 16位向上、向下、向上/下自动装载计数器 ● 16位可编程(可以实时修改)预分频器,计数器时钟频率的分频系数为1~65535之间的任意数值 ● 4个独立通道: ─ 输入捕获 ─ 输出比较 ─ PWM生成(边缘或中间对齐模式) ─ 单脉冲模式输出 ● 死区时间可编程的互补输出 ● 使用外部信号控制定时器和定时器互联的同步电路 ● 允许在指定数目的计数器周期之后更新定时器寄存器的重复计数器 ● 刹车输入信号可以将定时器输出信号置于复位状态或者一个已知状态 ● 如下事件发生时产生中断/DM
6、A: ─ 更新:计数器向上溢出/向下溢出,计数器初始化(通过软件或者内部/外部触发) ─ 触发事件(计数器启动、停止、初始化或者由内部/外部触发计数) ─ 输入捕获 ─ 输出比较 ─ 刹车信号输入 ● 支持针对定位的增量(正交)编码器和霍尔传感器电路 ● 触发输入作为外部时钟或者按周期的电流管理 ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// TIM2、TIM3、T
7、IM4和TIM5定时器功能包括: ● 16位向上、向下、向上/向下自动装载计数器 ● 16位可编程(可以实时修改)预分频器,计数器时钟频率的分频系数为1~65536之间的任意数值 ● 4个独立通道: ─ 输入捕获 ─ 输出比较 ─ PWM生成(边缘或中间对齐模式) ─ 单脉冲模式输出 ● 使用外部信号控制定时器和定时器互连的同步电路 ● 如下事件发生时产生中断/DMA: ─ 更新:计数器向上溢出/向下溢出,计数器初始化(通过软件或者内部/外部触发) ─ 触发事件(计数器启动、停止、初始化或者由内部/外部触发计数) ─ 输入捕获 ─ 输出比较 ● 支持针对定位
8、的增量(正交)编码器和霍尔传感器电路 ● 触发输入作为外部时钟或者按周期的电流管理 为1~65536之间的任意数值 ● 使用外部信号控制定时器和定时器互连的同步电路 ● 触发输入作为外部时钟或者按周期的电流管理 ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// TIM6和TIM7定时器的主要功能包括: ● 16位自动重装载累加计数器 ● 16位可编
9、程(可实时修改)预分频器,用于对输入的时钟按系数为1~65536之间的任意数值分频 ● 触发DAC的同步电路 注:此项是TIM6/7独有功能 ● 在更新事件(计数器溢出)时产生中断/DMA请求 ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// 开发目标1:TIM1的4个通道生成PWM,CH1—PWM1 CH2—PWM2
10、 CH3—PWM3 CH4—PWM4 TIM8的4个通道生成PWM,CH1—PWM5 CH2—PWM6 CH3—PWM7 CH4—PWM8 注:PWM1—PWM2 为一组,控制直流减速电机1 PWM3—PWM4 为一组,控制直流减速电机2 PWM5—PWM6 为一组,控制直流减速电机3 PWM7—PWM8 为一组,控制直流减速电机4 (PWM1、PWM3、PWM5、PWM7作为电机正向脉冲输出,占空比为万分比) (PWM2、PWM4、PWM
11、6、PWM8作为电机反向脉冲输出,占空比为万分比) ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// 开发目标2:TIM7作为定时器中断,产生固定的时间间隔,便于计算电机及落地码盘的速度(单位时间间隔脉冲增量) /////////////////////////////////////////////////////////////////////////////////////
12、///////////////////////////////////////////// 开发目标3:TIM2、TIM3、TIM4、TIM5作为编码器接口,读取编码器的旋转产生的脉冲数 TIM2的CH1作为编码器1的A相的输入,CH2作为编码器1的B相的输入 TIM3的CH1作为编码器2的A相的输入,CH2作为编码器2的B相的输入 TIM4的CH1作为编码器3的A相的输入,CH2作为编码器3的B相的输入 TIM5的CH1作为编码器4的A相的输入,CH2作为编码器4的B相的输入 (由于TIM2和TIM5的CH1和CH2共用引脚PA0和PA1,所以需要把TIM2 的CH1和CH2重
13、映射到引脚PA15和PB3) (PA15和PB3是JTAG接口中的两只引脚 ,重映射前先把JTAG口关闭 GPIO_PinRemapConfig(GPIO_Remap_SWJ_Disable, ENABLE)//关闭JTAG GPIO_PinRemapConfig(GPIO_Remap_SWJ_Disable, DISABLE)//打开JTAG GPIO_PinRemapConfig(GPIO_Remap_SWJ_JTAGDisable , ENABLE);//关闭JTAG 同时打开SWD) ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// 开发目标4:用2.3寸TFT液晶显示屏显示电机或码盘的速度(单位时间间隔的脉冲增量)和码盘脉冲总数 未完待续、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、






