嵌入式计时器以及simulink设计实现.docx

上传人:lao****ou 文档编号:951994 上传时间:2024-08-02 格式:DOCX 页数:11 大小:36.08KB
下载 相关 举报
嵌入式计时器以及simulink设计实现.docx_第1页
第1页 / 共11页
嵌入式计时器以及simulink设计实现.docx_第2页
第2页 / 共11页
嵌入式计时器以及simulink设计实现.docx_第3页
第3页 / 共11页
嵌入式计时器以及simulink设计实现.docx_第4页
第4页 / 共11页
嵌入式计时器以及simulink设计实现.docx_第5页
第5页 / 共11页
亲,该文档总共11页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述

《嵌入式计时器以及simulink设计实现.docx》由会员分享,可在线阅读,更多相关《嵌入式计时器以及simulink设计实现.docx(11页珍藏版)》请在第一文库网上搜索。

1、嵌入式计时器以及Simu1ink设计实现嵌入式计时器简介嵌入式计时器是一种在燧式系统中用于计时、计数和测量时间间隔的设备。它们通常用于生成精确的延迟、测量输入信号的频率或产生PWM信号。嵌入式计时器主要包括鲤件计时器(例如定时造/计数器、实时时钟)和软件计时器。1 嵌入式计时器类型2 .硬件计时器:硬件计时器通常集成在微控制器或处理器中,包括定时器/计数器、实时时钟(RTC)等。它们可以精确地计算时间间隔,适用于对时间精度要求较高的场景。3 .软件计时器:软件计时器是使用软件代码实现的计时器,通常通过使用系统时针或硬件计时器作为基准。它们相较于硬件计时器在精度上可能略有差距,但便于扩展和灵活控

2、制。嵌入式计时器应用4 .延时:嵌入式计时器可以用于产生精确的延迟,例如在执行任务之间的间隔。5 .计数:计时器可以用于计数操作,例如检测外部事件发生的次数。1 .频率测量:计时器可以用于测量外部信号的频率,例如捕获输入信号的上升沿和下降沿。1. PWM信号生成:嵌入式计时器可以用于生成PWM信号,用于控制电机、1ED等设备。示例代码(以STM32为例)使用STM32F10x微控制器实现延时功能的示例代码(硬件实现)。inc1ude”stm32f10x.h#inc1ude,stm32f10x_gpio.hzzftinc1ude,stm32fIOxrcc.h#inc1ude,zstm32fIOx

3、tim.h/配置TIM2以生成时间基准voidTIM2_Configuration(void)TIM_TimeBaseInitTypeDefTIM_TimeBaseStructure;/使能TIM2时钟RCC_APBIPeriphC1ockCmd(rcc_apbiPeriph_Tim2zenab1e);/配置TIM2基本参数TIM_TimeBaseStructure.TIM_Period=999;/设置计数器自动重装值TIM_TimeBaseStructure.TIM_Presca1er=71;/设置预分频TIMTimeBaseStructure.TIM_C1ockDivision=TIM_C

4、KD_DIV1;TIM_TimeBaseStructure.TIMCounterMode=TIM_CounterMode_Up;TIM_TimeBaseInit(TIM2,&T1M_TimeBaseStructure);/使能TIM2Tn1CnId(T工M2,ENAB1E);voidde1ay_ms(uint16_tms)uint16_ti;for(i=0;ims;i+)(TIMSetCounter(tim2,O);whiIe(TIMGetCounter(tim2)1000)()intmain(void)/初始化系统配置SystemInit();/配置TIM2以生成时间基准TIM2Config

5、uration();whi1e(1)(/延时1000毫秒de1ay_ms(1000);/.其他代码(可以根据需要执行一些动作).)使用STM32F10x微控制器实现延时功能的示例代码(软件实现)。inc1ude,stm32f10x.hzzftinc1ude,stm32f10x_gpio.h,z#inc1udez,stm32f10x_rcc.hzzftinc1udez,stm32f10x_tim.hz,/获取系统时钟uint32_tSystemCoreC1ock;/延时微秒VOidde1ay_us(uint32_tus)uint32_ti,j;uint32_tcount=(SystemCoreC

6、1ock/8000000)*us;f(i=0;icount;i+)(for(j=0;j2;j+)(_nop();/NoOPeration指令,用于延时)/延时毫秒Voidde1ay_ms(uint32_tms)uint32_ti;f(i=0;ims;i+)(de1ay_us(1000);)intmain(void)/初始化系统配置SystemInit();/获取系统时钟SystemCoreC1ock=SystemCoreC1ock;whi1e(1)I/延时1000毫秒de1ay_ms(1000);/.其他代码(可以根据需要执行一些动作).)使用STM32F10x微控制器的计数器功能的示例代码(

7、硬件实现)。ftinc1udezzstm32f10x.h,ftinc1ude,stm32f10x_gpio.h,ftinc1ude“stm32f10x_rCC.h#inc1ude/zstm32f10x_tim.h,zvoidTIM2_Counter_Config(void)GPIO_InitTypeDefGPIO_InitStructure;TIM_TimeBaseInitTypeDefTIM_TimeBaseStructure;TIMIC1nitTypeDefTIM_ICInitStructure;/使能TIM2和GPIOA时钟RCC_APBIPeriphC1ockCmd(rcc_apbiP

8、eriph_Tim2zenab1e);RCC_APB2PeriphC1ockCmd(RCC_APB2Periph_GPiOA,enab1e);/配置GP1oAO作为输入,上拉GPIO_InitStructure.GPIQPin=GPIO_Pin_0;GPIO_InitStructure.GPIO_Mode=GPIO_Mode_IPU;GPIOInit(GPIOAz&GPIOInitStructure);/配置TIM2基本参数TIM_TimeBaseStructure.TIM_Period=OxFFFF;TIM_TimeBaseStructure.TIM_Presca1er=0;TIMTimeB

9、aseStructure.TIMC1ockDivision=TIM_CKD_DIV1;TIM_TimeBaseStructure.TIM_CounterMode=TIM_CounterMode_Up;TIMTimeBaseInit(TIM2,&TIM_TimeBaseStructure);/配置TIM2的输入捕获TIM_ICInitStructure.TIM_Channe1=TIM_Channe1_1;TIM_ICInitStructure.TIM_ICPo1arity=TIM_ICPo1arity_Rising;/上升沿捕获TIM_ICInitStructure.TIM_ICSe1ectio

10、n=TIM_ICSe1ection_DirectTI;T1M1CInitStructure.T1MICPresca1er=TiM1iCPSJD1V1;一TIM_ICInitStructure.TIM_ICFi1ter=0x0;Tn1PWM1Config(T工M2,&TIM_ICInitStructure);/使能TIM2TIMCmd(iM2,enab1e);intmain(void)uint16tcounter_va1ue;TIM2_Counter_Config();/配置T1M2计数器whi1e(1)(counter_va1ue=TIM_GetCounter(TIM2);/读取T1M2计数器

11、的值.其他代码(可以根据需要处理计数值).)使用STM32F10x微控制器的计数器功能的示例代码(软件实现)。ftinc1ude,stm32f10x.hzzftinc1ude,stm32f10x_gpio.h/z#inc1ude,stm32f10x_rcc.hzzftinc1udez,stm32f10x_exti.h,z#inc1udemisc.hvo1ati1euint32_tpu1seCounter=0;voidEXTIO_Configuration(void)EXTI_InitTypeDefEXTI_InitStructure;GPIO_InitTypeDefGPIO_InitStruc

12、ture;NVIC_InitTypeDefNVIC_InitStructure;/使能GP1oA时钟RCC_APB2PeriphC1ockCmd(RCC_APB2Periph_GPiOA,enab1e);/配置GP1OAO作为输入,上拉GPIO_InitStructure.GPIO_Pin=GPIO_Pin_0;GP工0二工nitStructure.GP工O1MOde=GPIO_Mode_IPU;GPIO_Init(GPIOA,&GP工O1nitStrUCtUre);/使能AF1O时钟RCC_APB2PeriphC1ockCmd(RCC_APB2Periph_AFio,enab1e);/配置G

13、P1OAo为外部中断源GPIO_EXTI1ineConfig(GP工O-PortSourceGP工OA,GPIO_PinSourceO);/配置EXTI线OEXTI_InitStructure.EXTI_1ine=EXTI_1ineO;EXTI_InitStructure.EXTI_Mode=EXTI_Mode_Interrupt;EXTI_InitStructure.EXTI_Trigger=EXTI_Trigger_Rising;EXTIInitStructure.EXTI1ineCmd=ENAB1E;EXTI-Iit(&EXTI_InitStructure);/配置NVICNVIC_In

14、itStructure.NVIC_IRQChanne1=EXT1O_IRQn;NVIC_InitStructure.NVIC_IRQChanne1PreemptionPriority=OxO1;NVIC_InitStructure.NVICIRQChanne1SubPriority=0x01;NV工C1工nitStructure.NV工C1工RQChanne1Cmd=ENAB1E;NVIC_Init(&NV!C_InitStructure);)voidEXTIO-IRQHand1er(void)if(EXTI-GetITStatUS(EXTI_1ineO)!=RESET)(Pu1seCount

15、er+;/增加脉冲计数值EXTI-C1earITPendingBit(EXTi_1ineO);/清除中断标志位)intmain(void)uint32_tcounter_va1ue;EXTIO,Configuration();/配置外部中断(EXTI)whi1e(1)(counter_va1ue=pu1seCounter;/读取脉冲计数值.其他代码(可以根据需要处理计数值).)使用STM32F10x微控制器生成PwM信号的示例代码(硬件实现)。inc1udez,stm32f10x.hz,ftinc1ude,stm32f10x_gpio.h,z#inc1ude,zstm32f10x_rcc.hz/#inc1udez,stm32f10x_tim.hz,/配置T1M3以生成PWM信号VOidTIM3-P-Configuration(void)GPIO_InitTypeDefGPI0_InitStructure;

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 应用文档 > 工作总结

copyright@ 2008-2022 001doc.com网站版权所有   

经营许可证编号:宁ICP备2022001085号

本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有,必要时第一文库网拥有上传用户文档的转载和下载权。第一文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知第一文库网,我们立即给予删除!



客服