STM32F103怎样用定时器来测出某个stm32高电平是多少伏的时间

STM32_ceshizhong 用 写的测量一个方波的周期,用定时器实现,主要验证系统时钟是多少。 SCM 单片机开发 275万源代码下载-
&文件名称: STM32_ceshizhong& & [
& & & & &&]
&&所属分类:
&&开发工具: C#
&&文件大小: 4711 KB
&&上传时间:
&&下载次数: 52
&&提 供 者:
&详细说明:用STM32写的测量一个方波的周期,用定时器实现,主要验证系统时钟是多少。-STM32 write measurement cycle of a square wave, with a timer implementation, the main verification system clock.
&[]:文件有密码,不知道密码
&近期下载过的用户:
&输入关键字,在本站275万海量源码库中尽情搜索:
&[] - STM32 频率计
用输入捕获发测得频率 测频范围根据定时器分频可变
&[] - 利用stm32 tim定时器的计数模式测信号频率
&[] - 使用STM32F103C8T6处理器和OLED显示屏,传感器为IMU AHRS ,实现了串口通信读取数据,并可以使用桌面调试软件读取串口数据。
&[] - STM3210ZET6频率测试程序工程文件,可直接运行,频率测试范围
1HZ--24M,串口显示数据
&[] - 在VS2005中,.Net里面有个ileSystemWatcher控件,用来监控文件变化,它会通知文件创建,修改,删除的消息。网上这样的例子很多,但是在实际应用的时候,发现还有一些待处理的问题,我做了一个简单的demo,解决了如下的问题:
1. 多次连续触发 (通过一个定时器来解决)导读:DMA2上有5个通道)可以管理存储器到存储器、设备到存储器和存储器到设备的数据传,保存84个字节的用户应用数据,SD/SDIO/MMC主机接口可以支持MMC卡系统规范4.2版中的3个不同的数据,该接口可以使数据传输速率达到48MHz,SDIO存储卡规范2.0版支持两种数据总线模式:1位(默认)和4位,●12位模式下的左右数据对齐,从CPU核心中以高速输出压缩的数据流,为开发人员提供了清晰的指令
注: 在进入停机或待机模式时,RTC、IWDG和对应的时钟不会被停止。
2.3.15 DMA
灵活的12路通用DMA(DMA1上有7个通道,DMA2上有5个通道)可以管理存储器到存储器、设备到存储器和存储器到设备的数据传输;2个DMA控制器支持环形缓冲区的管理,避免了控制器传输到达缓冲区结尾时所产生的中断。
每个通道都有专门的硬件DMA请求逻辑,同时可以由软件触发每个通道;传输的长度、传输的源地址和目标地址都可以通过软件单独设置。
DMA可以用于主要的外设:SPI、I2C、USART,通用、基本和高级控制定时器TIMx,DAC、I2S、SDIO和ADC。
2.3.16 RTC(实时时钟)和后备寄存器
RTC和后备寄存器通过一个开关供电,在VDD有效时该开关选择VDD供电,否则由VBAT引脚供电。后备寄存器(42个16位的寄存器)可以用于在关闭VDD时,保存84个字节的用户应用数据。RTC和后备寄存器不会被系统或电源复位源复位;当从待机模式唤醒时,也不会被复位。
实时时钟具有一组连续运行的计数器,可以通过适当的软件提供日历时钟功能,还具有闹钟中断和阶段性中断功能。RTC的驱动时钟可以是一个使用外部晶体的32.768kHz的振荡器、内部低功耗RC振荡器或高速的外部时钟经128分频。内部低功耗RC振荡器的典型频率为40kHz。为补偿天然晶体的偏差,可以通过输出一个512Hz的信号对RTC的时钟进行校准。RTC具有一个32位的可编程计数器,使用比较寄存器可以进行长时间的测量。有一个20位的预分频器用于时基时钟,默认情况下时钟为32.768kHz时,它将产生一个1秒长的时间基准。
2.3.17 定时器和看门狗
大容量的STM32F103xx增强型系列产品包含最多2个高级控制定时器、4个普通定时器和2个基本定时器,以及2个看门狗定时器和1个系统嘀嗒定时器。
下表比较了高级控制定时器、普通定时器和基本定时器的功能:
表4 定时器功能比较 定时器
TIM7 计数器分辩率 16位 计数器类型 向上,向下,向上/下 向上,向下,向上/下 预分频系数 1~65536之间的任意整数 1~65536之间的任意整数 1~65536之间的任意整数 产生DMA请求捕获/比较通道 互补输出 可以有 16位 可以没有 16位 向上 可以没有
高级控制定时器(TIM1和TIM8)
两个高级控制定时器(TIM1和TIM8)可以被看成是分配到6个通道的三相PWM发生器,它具有带死区插入的互补PWM输出,还可以被当成完整的通用定时器。四个独立的通道可以用于:
● 输入捕获
● 输出比较
● 产生PWM(边缘或中心对齐模式)
● 单脉冲输出
配置为16位标准定时器时,它与TIMx定时器具有相同的功能。配置为16位PWM发生器时,它具有全调制能力(0~100%)。
在调试模式下,计数器可以被冻结,同时PWM输出被禁止,从而切断由这些输出所控制的开关。 很多功能都与标准的TIM定时器相同,内部结构也相同,因此高级控制定时器可以通过定时器链接功能与TIM定时器协同操作,提供同步或事件链接功能。
通用定时器(TIMx)
STM32F103xC、STM32F103xD和STM32F103xE增强型系列产品中,内置了多达4个可同步运行的标准定时器(TIM2、TIM3、TIM4和TIM5)。每个定时器都有一个16位的自动加载递加/递减计数器、一个16位的预分频器和4个独立的通道,每个通道都可用于输入捕获、输出比较、PWM和单脉冲模式输出,在最大的封装配置中可提供最多16个输入捕获、输出比较或PWM通道。
它们还能通过定时器链接功能与高级控制定时器共同工作,提供同步或事件链接功能。在调试模式下,计数器可以被冻结。任一标准定时器都能用于产生PWM输出。每个定时器都有独立的DMA请求机制。
这些定时器还能够处理增量编码器的信号,也能处理1至3个霍尔传感器的数字输出。
基本定时器-TIM6和TIM7 这2个定时器主要是用于产生DAC触发信号,也可当成通用的16位时基计数器。 独立看门狗
独立的看门狗是基于一个12位的递减计数器和一个8位的预分频器,它由一个内部独立的40kHz的RC振荡器提供时钟;因为这个RC振荡器独立于主时钟,所以它可运行于停机和待机模式。它可以被当成看门狗用于在发生问题时复位整个系统,或作为一个自由定时器为应用程序提供超时管理。通过选项字节可以配置成是软件或硬件启动看门狗。在调试模式下,计数器可以被冻结。
窗口看门狗
窗口看门狗内有一个7位的递减计数器,并可以设置成自由运行。它可以被当成看门狗用于在发生问题时复位整个系统。它由主时钟驱动,具有早期预警中断功能;在调试模式下,计数器可以被冻结。
系统时基定时器
这个定时器是专用于实时操作系统,也可当成一个标准的递减计数器。它具有下述特性: ●
● 24位的递减计数器 自动重加载功能 当计数器为0时能产生一个可屏蔽系统中断 可编程时钟源
2.3.18 I2C总线
多达2个I2C总线接口,能够工作于多主模式或从模式,支持标准和快速模式。
I2C接口支持7位或10位寻址,7位从模式时支持双从地址寻址。内置了硬件CRC发生器/校验器。 它们可以使用DMA操作并支持SMBus总线2.0版/PMBus总线。
2.3.19 通用同步/异步收发器(USART)
STM32F103xC、STM32F103xD和STM32F103xE增强型系列产品中,内置了3个通用同步/异步收发器(USART1、USART2和USART3),和2个通用异步收发器(UART4和UART5)。
这5个接口提供异步通信、支持IrDA SIR ENDEC传输编解码、多处理器通信模式、单线半双工通信模式和LIN主/从功能。
USART1接口通信速率可达4.5兆位/秒,其他接口的通信速率可达2.25兆位/秒。
USART1、USART2和USART3接口具有硬件的CTS和RTS信号管理、兼容ISO7816的智能卡模式和类SPI通信模式,除了UART5之外所有其他接口都可以使用DMA操作。
2.3.20 串行外设接口(SPI)
多达3个SPI接口,在从或主模式下,全双工和半双工的通信速率可达18兆位/秒。3位的预分频器可产生8种主模式频率,可配置成每帧8位或16位。硬件的CRC产生/校验支持基本的SD卡和MMC模式。 所有的SPI接口都可以使用DMA操作。
2.3.21 I2S(芯片互联音频)接口
2个标准的I2S接口(与SPI2和SPI3复用)可以工作于主或从模式,这2个接口可以配置为16位或32位传输,亦可配置为输入或输出通道,支持音频采样频率从8kHz到48kHz。当任一个或两个I2S接口配置为主模式,它的主时钟可以以256倍采样频率输出给外部的DAC或CODEC(解码器)。
2.3.22 SDIO
SD/SDIO/MMC主机接口可以支持MMC卡系统规范4.2版中的3个不同的数据总线模式:1位(默认)、4位和8位。在8位模式下,该接口可以使数据传输速率达到48MHz,该接口兼容SD存储卡规范2.0版。 SDIO存储卡规范2.0版支持两种数据总线模式:1位(默认)和4位。
目前的芯片版本只能一次支持一个SD/SDIO/MMC 4.2版的卡,但可以同时支持多个MMC 4.1版或之前版本的卡。
除了SD/SDIO/MMC,这个接口完全与CE-ATA数字协议版本1.1兼容。
2.3.23 控制器区域网络(CAN)
CAN接口兼容规范2.0A和2.0B(主动),位速率高达1兆位/秒。它可以接收和发送11位标识符的标准帧,也可以接收和发送29位标识符的扩展帧。具有3个发送邮箱和2个接收FIFO,3级14个可调节的滤波器。
2.3.24 通用串行总线(USB)
STM32F103xC、STM32F103xD和STM32F103xE增强型系列产品,内嵌一个兼容全速USB的设备控制器,遵循全速USB设备(12兆位/秒)标准,端点可由软件配置,具有待机/唤醒功能。USB专用的48MHz时钟由内部主PLL直接产生(时钟源必须是一个HSE晶体振荡器)。
2.3.25 通用输入输出接口(GPIO)
每个GPIO引脚都可以由软件配置成输出(推挽或开漏)、输入(带或不带上拉或下拉)或复用的外设功能端口。多数GPIO引脚都与数字或模拟的复用外设共用。除了具有模拟输入功能的端口,所有的GPIO引脚都有大电流通过能力。
在需要的情况下,I/O引脚的外设功能可以通过一个特定的操作锁定,以避免意外的写入I/O寄存器。 在APB2上的I/O脚可达18MHz的翻转速度。
2.3.26 ADC(模拟/数字转换器)
STM32F103xC、STM32F103xD和STM32F103xE增强型产品,内嵌3个12位的模拟/数字转换器(ADC),每个ADC共用多达21个外部通道,可以实现单次或扫描转换。在扫描模式下,自动进行在选定的一组模拟输入上的转换。
ADC接口上的其它逻辑功能包括:
● 同步的采样和保持
● 交叉的采样和保持
● 单次采样
ADC可以使用DMA操作。
模拟看门狗功能允许非常精准地监视一路、多路或所有选中的通道,当被监视的信号超出预置的阀值时,将产生中断。
由标准定时器(TIMx)和高级控制定时器(TIM1和TIM8)产生的事件,可以分别内部级联到ADC的开始触发和注入触发,应用程序能使AD转换与时钟同步。
2.3.27 DAC(数字至模拟信号转换器)
两个12位带缓冲的DAC通道可以用于转换2路数字信号成为2路模拟电压信号并输出。这项功能内部是通过集成的电阻串和反向的放大器实现。
这个双数字接口支持下述功能:
● 两个DAC转换器:各有一个输出通道
● 8位或12位单调输出
● 12位模式下的左右数据对齐
● 同步更新功能
● 产生噪声波
● 产生三角波
● 双DAC通道独立或同步转换
● 每个通道都可使用DMA功能
● 外部触发进行转换
● 输入参考电压 VREF+
STM32F103xC、STM32F103xD和STM32F103xE增强型产品中有8个触发DAC转换的输入。DAC通道可以由定时器的更新输出触发,更新输出也可连接到不同的DMA通道。
2.3.28 温度传感器
温度传感器产生一个随温度线性变化的电压,转换范围在2V & VDDA & 3.6V之间。温度传感器在内部被连接到ADC1_IN16的输入通道上,用于将传感器的输出转换到数字数值。
2.3.29 串行单线JTAG调试口(SWJ-DP)
内嵌ARM的SWJ-DP接口,这是一个结合了JTAG和串行单线调试的接口,可以实现串行单线调试接口或JTAG接口的连接。JTAG的TMS和TCK信号分别与SWDIO和SWCLK共用引脚,TMS脚上的一个特殊的信号序列用于在JTAG-DP和SW-DP间切换。
2.3.30 内嵌跟踪模块(ETM)
使用ARM?的嵌入式跟踪微单元(ETM),STM32F10xxx通过很少的ETM引脚连接到外部跟踪端口分析(TPA)设备,从CPU核心中以高速输出压缩的数据流,为开发人员提供了清晰的指令运行与数据流动的信息。TPA设备可以通过USB、以太网或其它高速通道连接到调试主机,实时的指令和数据流向能够被调试主机上的调试软件记录下来,并按需要的格式显示出来。TPA硬件可以从开发工具供应商处购得,并能与第三方的调试软件兼容。
包含总结汇报、办公文档、人文社科、资格考试、旅游景点、外语学习、word文档、行业论文以及STM32F103CDE_DS_中文数据手册_V5_图文等内容。本文共22页
相关内容搜索查看: 9633|回复: 0
STM32F103的11个定时器详解
STM32F103系列的单片机一共有11个定时器,其中:
2个高级定时器
4个普通定时器
2个基本定时器
2个看门狗定时器
1个系统嘀嗒定时器
出去看门狗定时器和系统滴答定时器的八个定时器列表;
8个定时器分成3个组;
TIM1和TIM8是高级定时器
TIM2-TIM5是通用定时器
TIM6和TIM7是基本的定时器
这8个定时器都是16位的,它们的计数器的类型除了基本定时器TIM6和TIM7都支持向上,向下,向上/向下这3种计数模式
计数器三种计数模式
向上计数模式:从0开始,计到arr预设值,产生溢出事件,返回重新计时
向下计数模式:从arr预设值开始,计到0,产生溢出事件,返回重新计时
中央对齐模式:从0开始向上计数,计到arr产生溢出事件,然后向下计数,计数到1以后,又产生溢出,然后再从0开始向上计数。(此种技术方法也可叫向上/向下计数)
基本定时器(TIM6,TIM7)的主要功能:
只有最基本的定时功能,。基本定时器TIM6和TIM7各包含一个16位自动装载计数器,由各自的可编程预分频器驱动
通用定时器(TIM2~TIM5)的主要功能:
除了基本的定时器的功能外,还具有测量输入信号的脉冲长度( 输入捕获) 或者产生输出波形( 输出比较和PWM)
高级定时器(TIM1,TIM8)的主要功能:
高级定时器不但具有基本,通用定时器的所有的功能,还具有控制交直流电动机所有的功能,你比如它可以输出6路互补带死区的信号,刹车功能等等
通用定时器的时钟来源;
a:内部时钟(CK_INT)
b:外部时钟模式1:外部输入脚(TIx)
c:外部时钟模式2:外部触发输入(ETR)
d:内部触发输入(ITRx):使用一个定时器作为另一个定时器的预分频器
通用定时期内部时钟的产生:
从截图可以看到通用定时器(TIM2-7)的时钟不是直接来自APB1,而是通过APB1的预分频器以后才到达定时器模块。
当APB1的预分频器系数为1时,这个倍频器就不起作用了,定时器的时钟频率等于APB1的频率;
当APB1的预分频系数为其它数值(即预分频系数为2、4、8或16)时,这个倍频器起作用,定时器的时钟频率等于APB1时钟频率的两倍。
自动装在寄存器arr值的计算:
Tout= ((arr+1)*(psc+1))/Tclk;
Tclk:TIM3的输入时钟频率(单位为Mhz)。
Tout:TIM3溢出时间(单位为us)。
计时1S,输入时钟频率为72MHz,加入PSC预分频器的值为35999,那么:
((1+psc )/72M)*(1+arr )=((1+35999)/72M)*(1+arr)=1秒
则可计算得出自动窗装载寄存器arr=1999
通用定时器PWM工作原理
以PWM模式2,定时器3向上计数,有效电平是高电平,定时器3的第3个PWM通道为例:
定时器3的第3个PWM通道对应是PB0这引脚,三角顶点的值就是TIM3_ARR寄存器的值,上图这条红线的值就TIM3_CCR3
当定时器3的计数器(TIM3_CNT)刚开始计数的时候是小于捕获/比较寄存器(TIM3_CCR3)的值,
此时PB0输出低电平,随着计数器(TIM3_CNT)值慢慢的增加,
当计数器(TIM3_CNT)大于捕获/比较寄存器(TIM3_CCR3)的值时,这时PB0电平就会翻转,输出高电平,计数器(TIM3_CNT)的值继续增加,
当TIM3_CNT=TIM3_ARR的值时,TIM3_CNT重新回到0继续计数,PB0电平翻转,输出低电平,此时一个完整的PWM信号就诞生了。
PWM输出模式;
STM32的PWM输出有两种模式:
模式1和模式2,由TIMx_CCMRx寄存器中的OCxM位确定的(“110”为模式1,“111”为模式2)。区别如下:
110:PWM模式1,在向上计数时,一旦TIMx_CNT
在向下计数时,一旦TIMx_CNT&TIMx_CCR1时通道1为无效电平(OC1REF=0),否则为有效电平(OC1REF=1)。
111:PWM模式2-在向上计数时,一旦TIMx_CNTTIMx_CCR1时通道1为有效电平,否则为无效电平。
由以上可知:
模式1和模式2正好互补,互为相反,所以在运用起来差别也并不太大。而从计数模式上来看,PWM也和TIMx在作定时器时一样,也有向上计数模式、向下计数模式和中心对齐模式
PWM的输出管脚:
不同的TIMx输出的引脚是不同(此处设计管脚重映射)
TIM3复用功能重映射:
注:重映射是为了PCB的设计方便。值得一提的是,其分为部分映射和全部映射
PWM输出频率的计算:
PWM输出的是一个方波信号,信号的频率是由TIMx的时钟频率和TIMx_ARR这个寄存器所决定的
输出信号的占空比则是由TIMx_CRRx寄存器确:
占空比=(TIMx_CRRx/TIMx_ARR)*100%
PWM频率的计算公式为:
F就是PWM输出的频率,单位是:HZ;
ARR就是自动重装载寄存器(TIMx_ARR);
PSC 就是预分频器(TIMx_PSC);
72M就是系统的频率;
STM32 高级定时器PWM的输出
一路带死区时间的互补PWM的波形图
STM32F103VC这款单片机一共有2个高级定时器TIM1和TIM8
这2个高级定时器都可以同时产生3路互补带死区时间的PWM信号和一路单独的PWM信号,
具有刹车输入功能,在紧急的情况下这个刹车功能可以切断PWM信号的输出
还具有支持针对定位的增量(正交)编码器和霍尔传感器电路
高级控制定时器(TIM1 和TIM8) 由一个16位的自动装载计数器组成,它由一个可编程的预分频器驱动
它适合多种用途,包含测量输入信号的脉冲宽度( 输入捕获) ,或者产生输出波形(输出比较、PWM、嵌入死区时间的互补PWM等)。
使用定时器预分频器和RCC时钟控制预分频器,可以实现脉冲宽度和波形周期从几个微秒到几个毫秒的调节。
高级控制定时器(TIM1 和TIM8) 和通用定时器(TIMx) 是完全独立的,它们不共享任何资源
H桥电路为避免由于关断延迟效应造成上下桥臂直通,有必要设置死区时间
死区时间可有效地避免延迟效应所造成的一个桥臂未完全关断,而另一桥臂又处于导通状态,避免直通炸开关管。
死区时间越大,电路的工作也就越可靠,但会带来输出波形的失真以及降低输出效率。
死区时间小,输出波形要好一些,但是会降低系统的可靠性,一般这个死区时间设置为us级
元器件死区时间是不可以改变的,它主要是取决于元器件的制作工艺和材料!
原则上死区时间当然越小越好。设置死区时间的目的,其实说白了就是为了电路的安全。最佳的设置方法是:在保证安全的前提下,设置的死区时间越小越好。以不炸功率管、输出不短路为目的。
STM32死区时间探究
设置寄存器:就是刹车和死区控制寄存器(TIMx_BDTR)
这个寄存器的第0—7位,这8个位就是用来设置死区时间的,使用如下:
以TIM1为例说明其频率是如何产生的。
定时器1适中产生路线:
系统时钟-& AHB预分频 -& APB2预分频 –& TIM1倍频器–& 产生TIM1的时钟系统
流程图看可以看出,要想知道TIM1的时钟,就的知道系统时钟,AHB预分频器的值,还有APB2预分频器的值,只要知道了这几个值,即可算出TIM1的时钟频率?
这些值从何来,在“SystemInit()”这个时钟的初始化函数中已经给我们答案了,在这个函数中设置的系统时钟是72MZ,AHB预分频器和APB2预分频器值都是设置为1,由此可算出:TIM1时钟频率:
72MHZ了,TDTS=1/72MHZ=13.89ns
Tdtg死区时间步进值,它的值是定时器的周期乘以相应的数字得到的
下面看看官方给的公式如何使用,如下:
DTG[7:5]=0xx=&DT=DTG[6:0]×Tdtg,Tdtg=TDTS
首先由DTG[7:5]=0xx可以知道的是:DTG的第7位必须为0,剩余的0~6这7位可配置死区时间,假如TIM1的时钟为72M的话,那么由公式Tdtg=TDTS可计算出:TDTS=1/72MHZ=13.89ns。
有了这个值,然后通过公式DT=DTG[6:0]×Tdtg即可计算出DT的值。
如果DTG的第0~6位均为0的话,DT=0
如果DTG的第0~6位均为1的话,DT=127*13.89ns=1764ns
如果TIM1的时钟为72M的话,
公式1可设置的死区时间0~1764ns,也就是说:
如果你的项目需要输出的PWM信号要求的死区时间是0——1764ns的时候你就可以用公式1
同样可计算出4个公式的死去区间,如下:
公式1:DT=0~1764ns
公式2:DT=1777.9ns~3528.88ns
公式3:DT=3555.84ns~7000.56ns
公式4:DT=7111.68ns~14001.12ns
如何设置死区时间:
假如我们设计了一个项目要求输出的PWM信号中加入一个3us的死区时间因为3us这个值在第二个公式决定的死区范围之内所以选择第二个公式。*2)=108,
所以DTG[5:0]=108-64=44
所以DTG=127+44+32=203=0XCB,TIM1-&BDTR|=0Xcb
这里为什么要在加上一个32那?在公式2中DTG的第5位是一个X,也就是说这一位可以设置为高电平,也可以设置为低电平,在这里我们将这一位设置为了高电平,所有要在加上一个32.如此而已!
Powered by//基于STM32F103RBT8 的PWM波输出程序 //输出六路脉冲
#include "timer.h"
#include "gpio.h"
Modul_OpenLoop 0.85
pw_counter=0;
TempTpr=3600; test_temp[400];
//载波周期
//正弦表格
int sintab[]=
0,64,128,192,257,321,385,449,513,577,
640,704,767,830,893,956,42,1204,
87,67,43,1801,
73,40,02,2355,
10,60,03,2850,
85,14,36,3275,
87,92,89,3619,
06,84,53,3875,
33,82,23,4035,
63,83,93,4095,
93,83,63,4055,
23,82,33,3914,
53,84,06,3678,
89,92,87,3351,
36,14,85,2941,
03,60,10,2459,
02,40,73,1916,
43,67,87,1326,
42,6,893,830,767,704,
640,577,513,449,385,321,257,192,128,64,
0,-64,-128,-192,-257,-321,-385,-449,-513,-577,
-640,-704,-767,-830,-893,-956,-,-,
-,-,-,-,-,
-,-,-,-,-,
-,-,-,-,-,
-,-,-,-,-,
-,-,-,-,-,
-,-,-,-,-,
-,-,-,-,-,
-,-,-,-,-,
-,-,-,-,-,
-,-,-,-,-,
-,-,-,-,-,
-,-,-,-,-,
-,-,-,-,-,
-,-,-,-,-,
-,-,-,-,-,
-,-,-,-,-,
-,-,-,-893,-830,-767,-704,
-640,-577,-513,-449,-385,-321,-257,-192,-128,-64};
void Timer1_Init(void)
TIM1-&ARR=3600;
TIM1-&CCR1=900;
RCC-&APB2ENR|=1&&11; TIM1-&PSC=0;
//TIM1时钟使能 72M
//预分频器
//设定计数器自动重装值 ,pwm频率
//允许更新中断 //允许捕获/比较1中断 //允许捕获/比较2中断 //允许捕获/比较3中断 TIM1-&DIER|=1&&0;
TIM1-&DIER|=1&&1; TIM1-&DIER|=1&&2;
TIM1-&DIER|=1&&3;
TIM1-&CCMR1|=1&&3;
TIM1-&CCMR1|=7&&4;
//OC1PE:开启TIMx_CCR1寄存器的预装载功能 //110:PWM模式1
//OC2PE:开启TIMx_CCR2寄存器的预装载功能 //110:PWM模式1
//OC1PE:开启TIMx_CCR1寄存器的预装载功能 //110:PWM模式1
//OC2PE:开启TIMx_CCR3寄存器的预装载功能 //110:PWM模式1
//产生更新事件,若开启预装载功能,则只有在产生更新//通道2
TIM1-&CCMR1|=1&&11;
TIM1-&CCMR1|=7&&12;
TIM1-&CCMR2|=1&&3;
TIM1-&CCMR2|=7&&4;
//通道4 // TIM1-&CCMR2|=1&&11;
TIM1-&CCMR2|=7&&12;
TIM1-&EGR|=1;
事件后,数据才从缓存
//PWM输出1 配置
TIM1-&CCER|=1&&0;
//输入/捕获1输出使能,OC1的输出电平依赖于MOE、OSSI、OSSR、OIS1、OIS1N和CC1NE位的值
TIM1-&CCER|=0&&1;
//CC1P :输入/捕获1输出极性
(Capture/Compare 1
output polarity)
TIM1-&CCER|=1&&2;
//CC1NE :输入/捕获1
1互补输出使能 互补输出极性 (Capture/Compare 1 complementary output enable)
TIM1-&CCER|=0&&3;
//CC1NP :输入/捕获
(Capture/Compare 1 complementary output polarity)
//PWM输出2 配置
TIM1-&CCER|=1&&4; TIM1-&CCER|=0&&5; TIM1-&CCER|=1&&6; TIM1-&CCER|=0&&7;
//PWM输出3 配置
TIM1-&CCER|=1&&8; TIM1-&CCER|=0&&9; TIM1-&CCER|=1&&10; TIM1-&CCER|=0&&11; TIM1-&BDTR|=1&&15;
TIM1-&BDTR&=~(0XFF&&0); TIM1-&BDTR|=0X80&&0;
//MOE: 主输出使能 (Main output enable)
//UTG[7:0]: 死区发生器设置 (Dead-time generator setup)
//0x80:死区时间2us左右 TIM1-&CR1|=1&&7;
//ARPE :自动重装载预装载允许位 1:TIMx_ARR寄存器被//边沿对齐模式
//使能定时器1 装入缓冲器。
TIM1-&CR1|=0&&5;
//--------------------
TIM1-&CR1|=1&&0;
MY_NVIC_Init(1,3,TIM1_UP_IRQChannel,2);//抢占1,子优先级3,组2
void DcAcOpenLoop(void)
猜你喜欢的内容。。。
……这是一个用stm32f103 定时器1 做的正弦脉宽调制程序_电子电路_工程科...
……stm32f103中断和定时器程序_计算机软件及应用_it计算机_专业资料。主要是程序外部中断和定时器程序 1 stm32 中断程序 *=== *名 称: main.c *功 能: *入......
……stm32 的通用定时器如何作为 51 单片机的定时器使用 作者:zhc 时间: 我最近在用 stm32f103vet6 这款单片机来做一个超声波测距程序 (1)我想用这个......
……基于stm32f103vet6定时器中断_电子电路_工程科技_专业资料。stm32定时器中断这个程序演示了一个简单的定时器中断,对于初学者很实用,本人亲测过,定时器设置了五秒......
……从32k字节至128k字节闪存程序存储器 ? 从6k字节至...第1页 stm32f103 增强型 1 介绍本文给出了stm..3个通用16位定时器和一个pwm定时器,还包 含标准......
……因此,需要一个定时 器来产生周期性的中断, 而且最好还让用户程序不能随意访问...这是一个用stm32f103 定... 5页 1下载券 第6章中断系统与定时器 42页 免费......
……正弦脉宽调制spwm及其控制方法_能源化工_工程科技_专业...1 pwm控制的基本原理如何用一系列等幅不等宽...三相pwm 信号形成器实际上就是三个定时器或计数器......
……stm32 定时器 定时时间的计算_信息与通信_工程科技_专业资料。stm32 定时器 定时...数,自动重装载寄存器周期的值 *每 1 秒发生一次更新事件(进入中断服务程序)......
……stm32 定时器溢出模式设置环境: 主机:win7 开发环境:mdk23 mcu:stm32f103cbt6 源代码 1: 说明:定时器采用 tim2,时钟源为内部 8m 晶振,向上溢出模式. 此......
……stm32 高级定时器-pwm 简单使用(转)
16:19 高级定时器与通用定时器比较类似,下面是一个 tim1 的 pwm 程序,tim1 是 stm32 唯一的高级定时器。......
……正弦脉宽调制变频调速系统 实验类型: 一、实验目的和要求(必填) 三、主要仪器设备...图 3 不同的 vf 曲线 三、实验内容 (1)用 spwm 变频器驱动三相异步电动......
……stm32f1 通用定时器示例详解--timebase 前言基于...1 、 time base 的寄存器配置软件配置,运行程序可以...(值为 0x00),即是冻结 forzen,适用于产生一个......
……stm32f103单片机的简易测速计设计方案_电子电路_工程...任意配置为捕捉、比较和脉宽调制 3 个功能模式之一...tmr1 定时器的计数值会立即复制到 ccpr1h 和 ccpr......
……stm32f107xx 中,只有一个高级控制定时器 tim1。而...gpio 跑马灯实验所用到的相同,在此不再 多做介绍...[编辑] 程序分析: 编辑] 程序分析: [编辑] 固件......
……字节的闪存程序存储器 (stm32f103xx 中的第二个 ...由标准定时器(timx)和高级控制定时器(tim1)产生的...电脉冲测试输出为光隔离无源输出,脉宽为 80ms±.....
……基于stm32f103vet6的pwm呼吸灯_电子电路_工程科技_专业资料。stm32定时器中断,pwm 这个程序我亲测过了,我用的是奋斗版开发板v0函数固件库用的5 #include ......
……超声波是淘宝买的一个模块,只有5个引脚,用起来很...();定时器初始化函数 lcm_init(); delay_nms...超声波测距程序 2页 1下载券
stm32内部ad采样......
……stm32pwm 的正弦信号发生器设计 189 是, 几乎所有的单片机都提供定时器或者 ...可以调制的方波信号 ,图1 所示为一种在电路中 [5‐6 ] 经常遇到 的pwm波......
……简称脉宽调制,是利用微处理器的数字输出来对模拟电路进 行控制的一种非常有效的...基于stm32定时器产生pwm... 34页 1下载券
stm32学习笔记-pwm波形输... .....
……(c)程序计数器 (d)程序状态寄存器 handle 模式...模拟的转换器 (d)stm32 adc 是一个 8 位连续...已知 tim1 定时器的起始地址为 0x,则......
看过本文章的还看过。。。
您可能感兴趣。。。
最新浏览记录}

我要回帖

更多关于 高电平 低电平 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信