本例展示了如何利用外设TIM2来产生四路频率不同的信号。 TIM2时钟设置为36MHz,预分频设置为2,使用输出比较-翻转模式(Output Compare Toggle Mode)。 TIM2计数器时钟可表达为:TIM2 counter clock = TIMxCLK / (Prescaler +1) = 12 MHz 设置TIM2_CCR1寄存器值为32768,则CC1更新频率为TIM2计数器时钟频率除以CCR1寄存器值,为366.2 Hz。因此,TIM2通道1可产生一个频率为183.1 Hz的周期信号。 同理,根据寄存器TIM2_CCR2 、TIM2_CCR3和 TIM2_CCR4的值,TIM2通道2可产生一个频率为366.3 Hz的周期信号;TIM2通道3可产生一个频率为732.4 Hz的周期信号;TIM2通道4可产生一个频率为1464.8 Hz的周期信号。 可以通过示波器观察各路输出
上传时间: 2014-01-22
上传用户:plsee
本例展示了如何使用嵌套中断向量控制器(Nested Vectored Interrupt Controller)来设置IRQ通道。 把3个计时器(TIM2,3,4)设置为在每一个计数器更新事项(counter update event)产生中断。这三个计时器都与各自对应的更新IRQ通道联系起来,并设置他们的中断优先级,TIM2为0,TIM4为2。 在他们各自的中断中:TIM2每1秒翻转一次PC.06的状态;TIM3每2秒翻转一次PC.07的状态;TIM4每3秒翻转一次PC.08的状态。 由于在STM3210B-LK1板上, 4个LED连接在PC.04 – PC.07,而不是STM3210B-EVAL上的PC.06 – PC.09,因此,程序要做相应的改动。
标签: Controller Interrupt Vectored Nested
上传时间: 2013-12-18
上传用户:Zxcvbnm
用TIM3定时器在PA6、PA7、PB0、PB1输出四种频率相同占空比分别是50 、37.5 、25 、12.5 的信号。 用TIM2的PWM_Input功能,从PA1口捕获PWM信号的频率及占空比,并用USART1输出测量信息。
上传时间: 2017-05-21
上传用户:lps11188
本例展示了如何设置TIM工作在输出比较-非主动模式(Output Compare Inactive mode),并产生相应的中断。 TIM2时钟设置为36MHz,预分频设置为35999,TIM2计数器时钟可表达为: TIM2 counter clock = TIMxCLK / (Prescaler +1) = 1 KHz 设置TIM2_CCR1寄存器值为1000, CCR1寄存器值1000除以TIM2计数器时钟频率1KHz,为1000毫秒。因此,经过1000毫秒的时延,置PC.06输出为低电平。 同理,根据寄存器TIM2_CCR2 、TIM2_CCR3和 TIM2_CCR4的值,经过500毫秒的时延,置PC.07输出为低电平;经过250毫秒的时延,置PC.08输出为低电平;经过125毫秒的时延,置PC.09输出为低电平。 输出比较寄存器的值决定时延的大小,当计数器的值小于这个值的时候,点亮与PC.06-PC.09相连的LED;当计数器的值达到这个值得时候,产生中断,在TIM2的4个通道相应的中断里,把它们一一关闭。
标签: Inactive Compare Output mode
上传时间: 2013-12-20
上传用户:ghostparker
STM32F407VGT6精确脉冲控制步进电机源码,采用STM32F407VGT6芯片,抛弃单脉冲输出方式,直接使用普通PWM输出方式精确输出脉冲个数,每个脉冲都可以改变频率和占空比。PWM+中断,简单粗暴。#include "sys.h"#include "delay.h"#include "pwm1.h"#include "pwm2.h"#include "pwm3.h"//注释见pwm1.c文件extern int count2;int main(void){ delay_init(168); //初始化延时函数 TIM2_Init(1,167); TIM3_Init(1,167); TIM5_Init(1,167); // delay_ms(1000); TIM2_OUTPUT(); TIM3_OUTPUT(); TIM5_OUTPUT(); while(1) { //TIM2每次输出完10个脉冲后间隔100ms再次输出 if(count2 >= 10){ delay_ms(100); TIM2_OUTPUT(); } }
标签: stm32f407vgt6 脉冲控制 步进电机
上传时间: 2021-10-26
上传用户:xsr1983
基于LabVIEW的ARM Cortex-M3嵌入式开发宝典电子书内容简介第 1 篇 软件篇1.1 LabVIEW Embedded Module for ARM Microcontrollers 模块介绍1.2 Keil RealView MDK 软件介绍1.3 Keil RTX 实时操作系统介绍1.4 LabVIEW ARM Module 软件架构1.5 LabVIEW ARM Module、RealView MDK、实验平台驱动软件安装1.6 STM32 实验范例查找与 USB JLink-OB 驱动加载第 2 篇 硬件篇2.1 ARM Cortex-M3 内核简介2.2 实验平台介绍2.2.1 STM32 Starter Board(学习板)介绍2.2.2 STM32 Core Board(核心板)介绍2.2.3 STM32 DAQ Board(数采板)介绍2.3 实验平台资源说明2.3.1 STM32 Starter Board 资源简介2.3.2 STM32 Core Board 资源简介2.3.3 STM32 DAQ Board 资源简介2.4 My_ARM 实验平台总结与展望第 3 篇 基础模块篇(附原理图)3.1.1 GPIO 介绍3.1.2 GPIO 工作原理3.1.3 GPIO 驱动实现3.1.4 GPIO 两种驱动方式比较3.1.5 GPIO 总结3.2 ADC/DAC3.2.1 ADC 介绍3.2.2 ADC 驱动实现3.2.3 DAC 介绍3.2.4 DAC 驱动实现3.3 中断(60 线)3.3.1 外部中断(19 线)3.3.1.1 外部 I/O 中断(GPIO:16 线)3.3.1.2 外部特定中断(PVD、RTC、USB:3 线)3.3.2 外部中断的驱动实现3.3.3 定时器中断(TIM2~TIM5、TIM6、TIM7、TIM1、TIM8)3.3.3.1 基本定时器中断3.3.3.2 通用定时器中断3.3.3.3 高级定时器中断3.3.4 定时器中断驱动实现3.3.4.1 更新中断驱动实现3.3.4.2 输入测量驱动实现3.3.4.3 编码器驱动实现3.4 PWM 生成3.4.1 PWM 原理、应用3.4.2 PWM 驱动实现3.4.3 PWM 设置技巧3.5 看门狗3.5.1 独立看门狗(IWDG)介绍3.5.2 独立看门狗驱动实现3.5.3 窗口看门狗(WWDG)介绍3.5.4 窗口看门狗驱动实现3.6 TFTLCD 显示、触摸屏操作、OLED 显示3.6.1 TFTLCD 工作原理3.6.2 TFTLCD 显示驱动实现3.6.3 触摸屏工作原理3.6.4 触摸屏驱动实现3.6.5 OLED 工作原理3.6.6 OLED 驱动实现.............
上传时间: 2022-07-17
上传用户:
正在做0-30V、0-15A的数控电源,程序搞了很久终于差不多了,得瑟得瑟自己腐蚀的板子:显示器件最初用128*64的是OLED小屏:屏幕太小感觉与机壳不配,换1.8寸的TFT彩屏:主控选用了STM8L152K4,SPI口彩屏。屏显第一行设置电压电流。第二行用大字体显示输出电压、电流。中部为输出电压电流曲线。屏幕成128*160分辨率后,最初想在多出的“空间”显示散热器、变压器温度、配色菜单或者为电池充电预置参数什么的,感觉意义不大,最终放了两条输出曲线。最下面是功率、电阻AH、WH等参数。用了3个定时器,tim1设为编码器模式,驱动编码器。TIM2产生PWM信号,启用了一个ADC通道采集热敏电阻信号,根据温度改变PWM占空比,实现散热扇温控调速。tim3精确定时,累计时间用于AH、WH参数计算。DAC为12位的双通道芯片MCP4822。芯片内置的12位ADC采集输出电压、电流和热敏电阻信号,前两者用于显示和计算,后者用于风扇温控。做到后来感觉不该在此处偷懒,用独立的ADC芯片就好了,显示和偏移就都能到1mV、1mA了,现在这板子,没辙了。启用了2个引脚的外部中断,以外部中断方式触发更新设置值和编码器按键值,编码器按键值决定设置位。反白(红)位为当前设置位,旋转编码器可改变设置值,短按编码器开关改变设置位,长按为输出\预制切换。还有3条口线用于控制继电器,切换输入电压。
上传时间: 2022-07-23
上传用户:bluedrops