详细开发2.新唐单片机cortexm032位numicro an1010sc how to use pwm v_第1页
详细开发2.新唐单片机cortexm032位numicro an1010sc how to use pwm v_第2页
详细开发2.新唐单片机cortexm032位numicro an1010sc how to use pwm v_第3页
详细开发2.新唐单片机cortexm032位numicro an1010sc how to use pwm v_第4页
详细开发2.新唐单片机cortexm032位numicro an1010sc how to use pwm v_第5页
已阅读5页,还剩15页未读 继续免费阅读

付费下载

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

?NUC1xx?NUC1xx32Cortex™-M0NuMicro® 3-i Rev.简 结 1.4.1定时器操 1.4.2双缓存,自动重载以及单次触发操 调制占空 死区发生 捕捉操 定时器启动步骤 停止流程 捕捉启动流 测试 波形..........................................................................................................................捕捉.......................................................................................................................... 简本文档讲述了如何利用定时器产生一个特定频率的波形并输出到蜂鸣器,以及利用捕捉功能捕捉输入波形的特性。根据IC型号不同 模块最多可有4套 产生器,可以配置为8个独立的输出, 0~7,或4组互补的带可编程死区发生器的 输出( 1),( ),(4, 5),(6, )。能后,当输入通道电平有上升沿时计数器将被锁存到上升捕捉锁存器中,当输入通道电平有下降沿时计数器将被锁存到下降捕捉锁存器中。捕捉通道0和通道0共用一个计时器,捕捉通道1和通道1共用一个计时器,以此类推,所以功能和捕捉功能不能在同一通道中同时使用。功能特 捕捉功能特 结 HCLK 图 DZDZCSR0(CSR03[2 CH0 (from CH1CSR1(CSR03[6 图 操向下计数器(CNR)和比较寄存器(CMR)决定了周期和占空比。图4描述了定时器时序操作。脉冲宽度调节遵循下面的,比较器的原理也在图3中说明了,请注意相应的GPIO口必须设置为输出 xy_CLK/(prescale+1)*(clockdivider)/(CNR+1);其中xy可以是01,23,45或67,这取决于所选的通道CMR+1)CMR CMR< 低脉冲宽度=(CNR-CMR) 高脉冲宽度=(CMR+1)如果CMR= 高脉冲宽度=1注意:1.Unit=1个时钟周Note:Note:x=图 图 双缓存,自动重载以及单次触发NUC1XX系列定时器具有双缓存功能。寄存器预先设定的值,在一个周期完成后,可以自动重载而不影响当前定时器操作。计数器值写入R0~7,并可从PDR0~7内读出当前计数器的值。控制寄存器(PCR)的CH0MOD位定义0是自动重载模式或是单触发模式。自动重载模式下,当计数器计到0,自动重载R0值到计数器。如果CNR0设定为0,计数器计数到0后,将进入暂停状态。如果此时CH0MOD设定为0,计数器停止运行。1~7运行状态与0相同.1writeanonzeronumbertoprescaler&setupclock图 调制占空图 死区发生NUC1XX系列提供 Deadzone捕捉操捕捉器0和0使用同一个定时器,捕捉器1和1使用另一组定时器,以此类推。当输入通道电平有上升沿时计数器将被锁存到CRLR中,当输入通道电平有下降沿时计数器将被锁存到CFLR中。设定CCR0[1](上升沿触发中断有效)和CCR0[2](下降沿触发中断有效),可以设定捕捉器通道0ClearbyClearbySetbySetbyClearbySetbyClearbyNote:57132

通道低脉宽为(CNR通道高脉宽为(CNR 根据周期设置计数器 停止流方式设定16位向下计数计数器(CNR)为0,并查看PDR状态,当PDR达到0,关闭 定时器(PCR的CHxEN位).(推荐)方式 方式 捕捉启动流, 代码部主函数(在 .c中下面的代码代 定时器的两个主要功能 功能和捕捉功能。首先是7个特定的频率波形 int32_tint32_tmain{ uint8_tu8Item;int32_ti32Loop=1;int32_ti32TestLoop=/*clock/*pinsTimerpropertysPt.u8Mode= sPt.u32FrequencysPt.u32Frequency=sPt.u8HighPulseRatio=peroid=1:100sPt.i32Inverter=/*HighPulseperoid:Totalu8Timer= /*engineclock/* Timer0Configuration /*EnableOutputTimer0 /*EnableInterruptSourcesTimer0andinstallcallfunction_/*EnableTimer0 while/*/*Set/*Timer0mendedproceduremethodTimercounteras0,WheninterruptrequestTimercounteras0inCallback/*DisableTimer0 Capture Capture3tocapture/*SetTimer1asoutputTimerpropertyforOutputwaveformsPt.u8Mode= sPt.u32Frequency=250; /*250Hz*/sPt.u8HighPulseRatio=30; /*HighPulseperoid:TotalPulseperoid=30:100sPt.i32Inverter= = /* 01engineclock /* Timer1Configuration /*EnableOutputTimer1 /*EnableTimer1 /*SetCapture3forcaptureTimerpropertyforCapture sPt.u32Frequency=frequencytocapturedata(LessthantheinputsPt.u8HighPulseRatio=Pulseperoid=50:100(Setanon-zerovalue)umvalue*/sPt.i32Inverter=/*Setthe/*HighPulseperoid:/*Setthecountertou8CapTimer= /* engineclock /* Timer3forCapture /*EnableInterruptSourcesCapture3 /*EnableInputfunctionCapture3 /*EnableCapture3 /*CapturetheInputWaveformData/*/*/*Timer1mendedproceduremethodTimercounteras0,internalcounterto0,Timer1counteras0 /*/*Timer1Interruptwhile/*Timer1 /*DisableOutputfunctionTimer1 /*/*Timer3mendedproceduremethodTimercounteras0,internalcounterto0,/* Capture3counteras0 /* Capture3Counterreachto0while /*ClearCapture3Interrupt /*Capture3 /*DisableInputfunctionCapture3 return0;}}回调函 TimerCallbackvoid{_if(s_u32Pulse==1*g_u16Frequency{/*/*Timer0mendedproceduremethodTimercounteras0,Wheninterruptrequest_TIMER0,}if(s_u32Pulse==1*g_u16Frequency/10+1) Count=0;}捕捉功注意:当下降或上升沿中断使能时,CAPIFx,x=0~7位被硬件置位,软件可以通过对该位写1,如 ,计数器将不会在下一个捕捉中断发生时重载。{uint16tu16RisingTime,u16FallingTime,u16HighPeroid,u16LowPeroid,/*CleartheCaptureInterruptFlag(TimeA)*/ /*WaitforInterruptFlag(Falling)while(Drv _CAP_FALLING_FLAG)!=1);/*CleartheCaptureInterruptFlag(TimeB)*/ u32i=while(u32i<{/*WaitforInterruptFlag(Falling) _CAP_FALLING_FLAG)!=1);/*CleartheCaptureInterruptFlag /*CleartheCaptureRisingInterruptFlag*/ /*GettheFallingCounterData /*WaitforCaptureRisingInterruptFlag _CAP_RISING_FLAG)!=/*CleartheCaptureRisingInterruptFlag /*GettheRisingCounterDatau32Count[u32i++]= }u16RisingTime=u16HighPeroid=u32Count[1]-u16LowPeroid=0x10000-u16TotalPeroid=0x10000-printf("TestResult:\nRisingTime=%d,FallingTime=%d.\nHighPeriod%d,LowPeriod=%d,TotalPeriod=}API使用参DriverReference测试v可通过lDK并Ex系列板,用户可以在E环境下执行代码或复位V板执行已经到片内sh的程序,然后根据提示选择测试,和波形蜂鸣器中可以听到不同音符的频率(Do,Re,Mi,Fa,Sol,La,和Si),或者用示波器测试GPIOA12的波捕捉3用来测试1输出波形特性,首先将GPIOA13(1功能脚)与GPIOA15(3功能脚)连接,3将在上升/下降沿时获得计数器的值,根据这些值计算出波形特性:周期,占空比等等修订历版日描ImportantNuvotonproductsarenotdesigned,intended,authorizedorwarrantedforuseascomponentsinsystemsorequipmentintendedforsurgicalimntation,atomicenergycontrolinstruments,airneorspaceshipinstruments,transportationinstruments,trafficsignalinstruments,combustioncontrolinstruments,orforotherapplicationsintendedtosupportorsustainlife.Furthermore,NuvotonproductsarenotintendedforapplicationswhereinfailureofNuvotonproductscouldresultorleadtoasituationwherein alinjury,deathorseverepropertyorenvironmentaldamagecouldoccur.Nuvotoncustomersusingorsellingtheseproductsforuseinsuchapplicationsdoso

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论