对STM32F103芯片,需要用TIM1设置jquery 1秒定时器1秒的中断。说明对TIM1的初

温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!&&|&&
LOFTER精选
网易考拉推荐
用微信&&“扫一扫”
将文章分享到朋友圈。
用易信&&“扫一扫”
将文章分享到朋友圈。
阅读(27549)|
用微信&&“扫一扫”
将文章分享到朋友圈。
用易信&&“扫一扫”
将文章分享到朋友圈。
历史上的今天
在LOFTER的更多文章
loftPermalink:'',
id:'fks_',
blogTitle:'STM32通用定时器',
blogAbstract:'STM32的定时器功能很强大,学习起来也很费劲儿.
其实手册讲的还是挺全面的,只是无奈TIMER的功能太复杂,所以显得手册很难懂,我就是通过这样看手册:while(!SUCCESS){看手册…}才搞明白的!所以接下来我以手册的顺序为主线,增加一些自己的理解,并通过11个例程对TIMER做个剖析。实验环境是STM103V100的实验板,MDK3.2 +Library2.东西都不怎么新,凑合用……
TIMER主要是由三部分组成:
1、 时基单元。
2、 输入捕获。
3、 输出比较。',
blogTag:'',
blogUrl:'blog/static/',
isPublished:1,
istop:false,
modifyTime:0,
publishTime:4,
permalink:'blog/static/',
commentCount:1,
mainCommentCount:1,
recommendCount:5,
bsrk:-100,
publisherId:0,
recomBlogHome:false,
currentRecomBlog:false,
attachmentsFileIds:[],
groupInfo:{},
friendstatus:'none',
followstatus:'unFollow',
pubSucc:'',
visitorProvince:'',
visitorCity:'',
visitorNewUser:false,
postAddInfo:{},
mset:'000',
remindgoodnightblog:false,
isBlackVisitor:false,
isShowYodaoAd:false,
hostIntro:'',
hmcon:'1',
selfRecomBlogCount:'0',
lofter_single:''
{list a as x}
{if x.moveFrom=='wap'}
{elseif x.moveFrom=='iphone'}
{elseif x.moveFrom=='android'}
{elseif x.moveFrom=='mobile'}
${a.selfIntro|escape}{if great260}${suplement}{/if}
{list a as x}
推荐过这篇日志的人:
{list a as x}
{if !!b&&b.length>0}
他们还推荐了:
{list b as y}
转载记录:
{list d as x}
{list a as x}
{list a as x}
{list a as x}
{list a as x}
{if x_index>4}{break}{/if}
${fn2(x.publishTime,'yyyy-MM-dd HH:mm:ss')}
{list a as x}
{if !!(blogDetail.preBlogPermalink)}
{if !!(blogDetail.nextBlogPermalink)}
{list a as x}
{if defined('newslist')&&newslist.length>0}
{list newslist as x}
{if x_index>7}{break}{/if}
{list a as x}
{var first_option =}
{list x.voteDetailList as voteToOption}
{if voteToOption==1}
{if first_option==false},{/if}&&“${b[voteToOption_index]}”&&
{if (x.role!="-1") },“我是${c[x.role]}”&&{/if}
&&&&&&&&${fn1(x.voteTime)}
{if x.userName==''}{/if}
网易公司版权所有&&
{list x.l as y}
{if defined('wl')}
{list wl as x}{/list}9453人阅读
单片机(4)
stm32高级定时器TIM1,更新中断初始化配置和普通定时器差别不大,需要注意的是结构IM_TimeBaseInitTypeDef中TIM_RepetitionCounter配置问题。TIM_RepetitionCounte是用来配置重复计数,就是重复溢出多少次才给你来一个溢出中断,只有高级定时器需要配置。下面是官方库中对它的注释:
它对应的寄存器叫TIM1_RCR.如果这个值不配置,上电的时候寄存器值可是随机的,本来1秒中断一次,可能变成N 秒中断一次。下图是stm32参考手册中对该寄存器的详细解释:
总结一下高级定时器溢出中断配置的步骤:
1,时钟使能
2,配置预分频、自动重装值和重复计数值
3,清除中断标志位(否则会先进一次中断)
4,使能TIM中断,选择中断源
5,设置中断优先级
6,使能TIMx外设
下面附上我用库函数写的TIM1溢出中断配置程序代码:
//arr:自动重装值。
//psc:时钟预分频数
void Timer1_Init(u16 arr,u16 psc)
TIM_TimeBaseInitTypeDef
TIM_TimeBaseS
NVIC_InitTypeDef NVIC_InitS
RCC_APB2PeriphClockCmd(RCC_APB2Periph_TIM1, ENABLE); //时钟使能
TIM_TimeBaseStructure.TIM_Period = //设置自动重装载寄存器周期值
TIM_TimeBaseStructure.TIM_Prescaler =(psc-1);//设置预分频值
TIM_TimeBaseStructure.TIM_ClockDivision = 0; //设置时钟分割
TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up;//向上计数模式
TIM_TimeBaseStructure.TIM_RepetitionCounter = 0;//重复计数设置
TIM_TimeBaseInit(TIM1, &TIM_TimeBaseStructure); //参数初始化
TIM_ClearFlag(TIM1, TIM_FLAG_Update);//清中断标志位
TIM_ITConfig(
//使能或者失能指定的TIM中断
TIM_IT_Update
| //TIM 更新中断源
TIM_IT_Trigger,
//TIM 触发中断源
//设置优先级
NVIC_InitStructure.NVIC_IRQChannel = TIM1_UP_IRQn;
NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0;//先占优先级0级
NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0;
//从优先级0级
NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
NVIC_Init(&NVIC_InitStructure);
TIM_Cmd(TIM1, ENABLE);
//使能TIMx外设
void TIM1_UP_IRQHandler(void)
if (TIM_GetITStatus(TIM1, TIM_IT_Update) != RESET)//检查指定的TIM中断发生与否:TIM 中断源
TIM_ClearITPendingBit(TIM1, TIM_IT_Update);//清除TIMx的中断待处理位:TIM 中断源
/***************在此处添加中断执行内容******************/
&&相关文章推荐
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:24013次
排名:千里之外
(window.slotbydup = window.slotbydup || []).push({
id: '4740881',
container: s,
size: '200,200',
display: 'inlay-fix'STM32F103在电力电子控制系统中的应用-机电之家网变频器技术网
您好,欢迎来到机电之家网! [
国家企业信息化
电子商务示范平台
当前位置: && &&
STM32F103在电力电子控制系统中的应用
添加:不详
1 引言cortex-m3处理器的核心是基于哈佛结构和三级流水线的32位内核。该内核集成了分支预测、单周期乘法和硬件除法等众多强大的功能,其出色的计算性能、对时间快速响应能力以及高度的可配置,使其支持应用范围广泛的实现。意法半导体公司的stm32f103以arm公司32位的cortexm3为核心,最高主频为72mhz。stm32f103不仅价格便宜,而且外设资源丰富,尤其具有适合电力变换器控制的pwm模块,使其在电力电子控制系统中具有广阔的应用前景。2 stm32f103资源st公司的stm32f103是一个完整的系列,各型号之间是脚对脚完全兼容的,该系列分为三个大类:小容量型号、中容量型号和大容量型号等。对于不同的型号,它们的存储器容量、片内外设种类及引脚数是不同的。对于大容量的stm32f103,它内部具有3个独立的12位模数转换器,2个高级定时器,4个普通定时器(定时器均可工作在输入捕获模式下)以及丰富的通讯单元,包括多达5个异步串行接口、1个usb从器件、1个can器件、i2c和spi等模块。该型号内置64k字节的静态sram 和512k字节闪存存储器。stm32f103还具备直接存储器存取(dma),用来提供在外设和存储器之间或者存储器和存储器之间的高速数据传输。无须cpu任何干预,通过dma数据可以快速地移动,这就节省了cpu的资源来执行其他操作。本文中的模拟量采样部分便使用了dma来处理数据,这样大大节省了cpu的开支。虽然stm32的adc采样周期较长(最快1微秒),但是精度很高,提高了系统的可靠性,再加上与dma配合使用,实时性也可以得到很好的保障。另外stm32f103的i/o口配置非常灵活,其i/o口复用功能具有重映射功能,即可以实现外设输入口输出口的多选择配置,使得端口配置更加灵活,根据实际现场的情况来自由配置,这就给pcb布线设计带来了不少方便。stm32f103主系统由以下部分构成。四个驱动单元:cortex-m3内核dcode总线(d-bus)、系统总线(s-bus)、通用dma1和通用dma2。四个被动单元:内部sram、内部闪存存储器、fsmc、ahb到apb的桥(ahb2apbx)。这些都是通过一个多级的ahb总线构架相互连接的,如图1所示。flitf为外部闪存接口;apb1最高限速36m;apb2无限速,可达到72m。 图1 stm32f103系统架构3 拓扑结构以及pwm分配3.1stm32f103定时器stm32f103具有2个高级控制定时器(tim1、tim8)和4个通用定时器(tim2、tim3、tim4、tim5),每个定时器都具有16位向上、向下、上/下自动装载计数器,都具有4个独立的通道。不同的是高级控制定时器(tim1、tim8)的前三个通道可以输出三组互补的pwm波形,并且可以进行死区编程,其高级控制定时器的第四个通道为单脉冲输出。每个通用定时器(tim2、tim3、tim4、tim5)的4个通道都只能工作在单脉冲输出模式下。高级控制定时器还具有刹车功能,使能该功能后,在刹车输入引脚捕获到一个有效的刹车电平之后就可以禁止该定时器所有通道的比较输出。图2给出了高级定时器在连续增减计数模式下4个通道的输出波形。在图2中,timx_ccry为通道y的比较寄存器(寄存器中x代表定时器编号,y代表通道编号),timx_arr为周期寄存器,同一个定时器的所有通道共用一个周期寄存器。由寄存器timx_cr1的cms[1:0]位来选择计数方式,并且在连续增减计数时可以选择由上溢事件或者下溢事件置中断标志位,或者上溢与下溢均置位(这里没有特定的上溢、下溢中断,而是统一归为更新中断)。图2 定时器的pwm输出波形timx_ccmr1,timx_ccmr2的ccys[1:0]用来配置通道y作为输入还是输出,ocym[2:0]用来配置pwm输出模式,例如翻转,pwm模式1(在向上计数时,一旦当前计数值timx_cnttimx_ccry时通道y为无效电平,否则为有效电平),pwm模式2(与pwm模式1相反)等。timx_ccer用来使能每个通道及其互补通道,同时对每个通道的输出极性进行配置,注意同一组pwm输出中的每个通道及其互补通道的输出极性要保持一致,即同时高有效或者同时低有效。timx_bdtr用来配置死区时间长度,同时可以使能刹车功能,并且对刹车电平的极性进行配置。在使用中通常还要对比较寄存器进行预装载,timx_ccmr1,timx_ccmr2的ocype位用来使能通道y的预装载,在最后还要配置timx_cr1的arpe位和timx_cr2的ccpc位来开启预装载功能。3.2三相逆变器三相逆变器的拓扑结构如图3所示。可以看到这里需要3组互补的pwm波形来驱动igbt,而stm32f103的高级控制定时器(tim1、tim8)的前三个比较通道可以输出三组互补且带死区的pwm波形,无论使用tim1定时器还是使用tim8定时器均能实现对三相二电平逆变器的控制。图3 三相逆变器拓扑结构3.3移相全桥dc-dc变换器移相全桥dc-dc变换器拓扑结构如图4所示。该电路前一级为单相逆变电路,后一级为半桥整流电路。因此移相全桥dc-dc变换器只需要两组互补的pwm波形来驱动igbt即可,因此实验中可使用tim1或tim8的通道1和通道2来负责生成所需的pwm波形。图4 移相全桥dc-dc变换器拓扑结构3.4前端升压的单相逆变器前端升压的单相逆变器拓扑结构如图5所示。该电路由升压电路和单相逆变器组成。逆变部分开关管的驱动 可以由tim1或tim8的通道1和通道2完成。因为升压igbt(ct_b)是单管控制,相对比较简单,但是不能使用tim8的通道3和通道4,因为同一个定时器的所有通道的计数周期是一样的。为了提高系统系统设计的灵活性升压igbt的开关频率和逆变器开关频率可任意设定,因此需要再使用一个定时器,例如tim4的通道1。图5 单相逆变器拓扑结构4 控制结构设计图6给出了一个基于stm32f103的电力电子控制系统的通用结构框图。由于不同的功率变换器模块所需要的pwm波形不同,比如升压电路需要单管pwm波形,单相逆变需要两组互补的pwm波形,三相逆变则需要三组互补的pwm波形,因此实际应用中,要根据不同的场合来合理地分配pwm。图6 控制结构框图如图6所示,系统通过采样需要控制的反馈量,与给定值进行比较,所得误差送给pi控制器,并由适当的pwm调制算法计算各个通道的比较值,来产生所需的pwm波形。同时在电力电子应用中不可避免的要设计故障保护,比如igbt短路保护、输入输出过压欠压保护、过流保护、接触器故障保护等,因此必须引入多路用于故障检测的反馈量。另外还要有必要的通讯以便实时观察记录数据和故障等。图7 空载电压动态波形 实验中,对于三相逆变器只采取了电压单闭环控制,而移相全桥dc-dc变换器和单相逆变器都增加了电流内环的控制,这也是根据实际的输出要求决定的,移相全桥dc-dc变换器和单相逆变器的输出要求精度高些,并且要求响应速度要快一些,因此加入了电流内环。图8 空载电压稳态波形5 实验结果三相逆变器输入电压为dc600v,输出电压为ac380v±5%,输出频率为50hz±1hz,输出电压谐波含量小于5%,逆变器负载为通风机负载,通风机的功率为37kw,逆变器启动时间小于15s。下面给出了由录波仪记录的三相逆变器输出电压和电流的实验波形。图7为空载时电压的动态波形,即软启动的过程,图8为空载时电压稳态波形及其谐波分析,图9为满载时电压以及电流的动态波形,图10为满载时电压稳态波形及其谐波分析,图11为满载时电流稳态波形及其谐波分析。从实验结果来看基于stm32 f103控制平台所设计的三相逆变器达到了要求的性能指标。图9 满载电压及电流动态波形图10 满载电压稳态波形6 结束语本文简单介绍了stm32f103在电力电力技术上的应用。针对不同的电力电子变换器结构,给出了stm32f103的硬件配置。可以看出,stm32f103的硬件资源能灵活满足不同电力电子控制系统配置需要,采用单片stm32f103可以实现各种控制方案。给出三相逆变器空载满载时电流电压的动态和稳态波形波形,进而验证了系统的可行性。图11 满载电流稳态波形作者简介袁野(1987-) 男 硕士研究生,研究方向为电力电子及电力传动。程善美(1966-)男 博士/教授,研究方向为电力电子及电力传动、智能控制技术。参考文献[1] stm. stm32f101xx, stm32f102xx, stm32f103xx, stm32f105xx and stm32f107xx advanced arm-based 32-bit mcus. 2009.[2] stm. stm32f10xxx cortex-m3 programming manual. 2010.[3] muhammad h. rashid. power electronics handbook: device, circuits, and applications. academic press, 2007.[4] 程善美,蔡凯,龚博等. dsp在电气传动系统中的应用[m].北京:机械工业出版社,2010.作 者:华中科技大学 / 袁 野 /程善美 / 胡 仙&
作者:未知 点击:2251次
本文标签:STM32F103在电力电子控制系统中的应用
* 由于无法获得联系方式等原因,本网使用的文字及图片的作品报酬未能及时支付,在此深表歉意,请《STM32F103在电力电子控制系统中的应用》相关权利人与机电之家网取得联系。
关于“STM32F103在电力电子控制系统中的应用”的更多资讯
:广州市瑞展展览有限公司
&【求购】 &&&
&【求购】 &&&
&【求购】 &&&
&【求购】 &&&
&【求购】 &&&
&【求购】 &&&
&【求购】 &&&
&【求购】 &&&
VIP公司推荐您现在的位置:
STM32F103增强型定时器(TIM1,TIM8)输出PWM
STM32F103增强型定时器(TIM1,TIM8)输出PWM
来源: 作者:embedcc 发表时间: 21:38 
有关STM32F103增强型定时器(TIM1,TIM8)输出PWM(互补加死区)
作者:&&&&文章来源:&&&&点击数:6874&&&&更新时间:&&&&
需求,输出两组互补PWM,频率为100KHz,占空比可调,死区时间600nS。
对于STM32的定时器配置,主要涉及3部分,时基设置,输出设置以及死区与刹车功能,其配置方法如下:
void&TIMER_Config(void)&&
TIM_TimeBaseInitTypeDef&TIM_TimeBaseS&&
TIM_OCInitTypeDef&TIM_OCInitS&&
TIM_BDTRInitTypeDef&TIM_BDTRInitS&&
TIM_TimeBaseStructure.TIM_Prescaler&=&0;&&
TIM_TimeBaseStructure.TIM_CounterMode&=&TIM_CounterMode_Up;&&
TIM_TimeBaseStructure.TIM_Period&=&720&-&1;&&&
TIM_TimeBaseStructure.TIM_ClockDivision&=&0;&&&
TIM_TimeBaseStructure.TIM_RepetitionCounter&=&0;&&
TIM_TimeBaseInit(TIM1,&&TIM_TimeBaseStructure);&&
TIM_TimeBaseInit(TIM8,&&TIM_TimeBaseStructure);&&
TIM_OCInitStructure.TIM_OCMode&=&TIM_OCMode_PWM1;&&&
TIM_OCInitStructure.TIM_OCPolarity&=&TIM_OCPolarity_H&&
TIM_OCInitStructure.TIM_OCNPolarity&=&TIM_OCNPolarity_H&&
TIM_OCInitStructure.TIM_OutputState&=&TIM_OutputState_E&&
TIM_OCInitStructure.TIM_OutputNState&=&TIM_OutputNState_E&&
TIM_OCInitStructure.TIM_OCIdleState&=&TIM_OCIdleState_S&&
TIM_OCInitStructure.TIM_OCNIdleState&=&TIM_OCNIdleState_R&&
TIM_OCInitStructure.TIM_Pulse&=&100;&&
TIM_OC1PreloadConfig(TIM1,&TIM_OCPreload_Enable);&&
TIM_OC1PreloadConfig(TIM8,&TIM_OCPreload_Enable);&&
TIM_OC1Init(TIM1,&&TIM_OCInitStructure);&&
TIM_OC1Init(TIM8,&&TIM_OCInitStructure);&&
TIM_BDTRInitStructure.TIM_Break&=&TIM_Break_D&&&
TIM_BDTRInitStructure.TIM_BreakPolarity&=&TIM_BreakPolarity_L&&
TIM_BDTRInitStructure.TIM_OSSRState&=&TIM_OSSRState_E&&&
TIM_BDTRInitStructure.TIM_OSSIState&=&TIM_OSSIState_E&&&
TIM_BDTRInitStructure.TIM_LOCKLevel&=&TIM_LOCKLevel_OFF;&&&
TIM_BDTRInitStructure.TIM_DeadTime&=&0x2B;&&
TIM_BDTRInitStructure.TIM_AutomaticOutput&=&TIM_AutomaticOutput_E&&&
TIM_BDTRConfig(TIM1,&&TIM_BDTRInitStructure);&&
TIM_BDTRConfig(TIM8,&&TIM_BDTRInitStructure);&&
TIM_Cmd(TIM1,&ENABLE);&&
TIM_Cmd(TIM8,&ENABLE);&&
TIM_CtrlPWMOutputs(TIM1,&ENABLE);&&
TIM_CtrlPWMOutputs(TIM8,&ENABLE);&&
希望两组PWM波具有独立性,互补干涉,无牵制,考虑到功能余量较大,就将TIM1和TIM8都用上,分别用来才生一组互补pwm,所带来问题就是两组波形之间产生了一个相对稳定的相位差,解决方法是引入第三个定时器,柯采用普通定时器,作为TIM1和TIM8的同步时钟,消除这个相位差的存在。
> STM32F103增强型定时器(TIM1,TIM8)输出PWM
"STM32F103增强型定时器(TIM1,TIM8)输出PWM"的相关文章
上一篇:没有了
Copyright (C)
www.embed.cc 嵌入式开发知识网
开发知识-大学生(电子信息),,第一门户!

我要回帖

更多关于 dna75芯片设置 的文章

 

随机推荐