申博直营网在线充值登入: [开发工具] 【华大测评】四、TIMER0

申博太阳城AB亚洲馆时时彩计划软件
146|2
楼主
        使用Timer0定时器两个通道产生不同的计时中断,申博直营网在线充值登入:分别驱动LED2及LED3闪烁,同时利用逻辑分析仪抓取进行观察。

一、实验资源
1、HC32F460-EVB;
2、Keil V5.28;
3、ST-LINK调试器;
4、逻辑分析仪

二、资源简介

      HC32F460PETB片上配置了丰富的定时器资源,包括高级控制定时器Timer6、通用控制定时器Timer4、TimerA和Timer0,另外还有看门狗定时器SWDT和WDT、实时时钟RTC等资源。本次实验使用通用控制定时器Timer0:

      从文档中可以了解到通用控制定时器“Timer0”可以实现同步计数和异步计数两种工作方式,同步计数时钟来自于“PCLK1”;异步计数时钟可以使用外部低速振荡器“XTAL32”或者内部低速振荡器“LRC,并且拥有两个独立的工作通道。使用定时器资源涉及到微控制器的时钟系统,下面对HC32F460时钟系统进行简单了解。


      从上面介绍中可以看到HC32F460系统时钟有6个时钟源可供选择,通过系统内的协调将不同的时钟信号传递至各个外设资源。下面是“时钟源规格”表的局部,其中高亮文字“MPLLQ”似乎应该为“MPLLR”。“MPLL”系统可以将输入时钟源折腾到多种频率,Timer0用到的“PCLK1”即可由其折腾84MHz,实验中Timer0两个通道均使用了该时钟做为同步计数时钟。





      Timer0相关寄存器比较少,配置也比较简单。实验中使能了计数匹配中断功能。



三、实验代码
      16位的基准值寄存器(CMPAR、CMPBR)计数范围为0~65535,PCLK1=84MHz。准备在“Tim0_ChannelA”产生0.1ms计时中断,基准值取8399,即:(8399+1)*1/84MHz=0.1ms;在“Tim0_ChannelB”产生0.01ms计时中断,基准值取839,即:(839+1)*1/84MHz=0.1ms=10us。
      代码参考了DEMO,主要代码片断如下:
  1. void TIMER0_Config(void)
  2. {
  3.         stc_tim0_base_init_t stcTimerCfg;
  4.     stc_irq_regi_conf_t stcIrqRegiConf;

  5.     MEM_ZERO_STRUCT(stcTimerCfg);
  6.     MEM_ZERO_STRUCT(stcIrqRegiConf);

  7.     /* Timer0 peripheral enable */
  8.     PWC_Fcg2PeriphClockCmd(PWC_FCG2_PERIPH_TIM02, Enable);
  9.     /*config register for channel A */
  10.     stcTimerCfg.Tim0_CounterMode = Tim0_Sync;
  11.     stcTimerCfg.Tim0_SyncClockSource = Tim0_Pclk1;
  12.     stcTimerCfg.Tim0_ClockDivision = Tim0_ClkDiv0;
  13.     stcTimerCfg.Tim0_CmpValue = (uint16_t)(8400-1);
  14.     TIMER0_BaseInit(M4_TMR02,Tim0_ChannelA,&stcTimerCfg);

  15.     /* Enable channel A interrupt */
  16.     TIMER0_IntCmd(M4_TMR02,Tim0_ChannelA,Enable);
  17.     /* Register TMR_INI_GCMA Int to Vect.No.001 */
  18.     stcIrqRegiConf.enIRQn = Int001_IRQn;
  19.     /* Select I2C Error or Event interrupt function */
  20.     stcIrqRegiConf.enIntSrc = INT_TMR02_GCMA;
  21.     /* Callback function */
  22.     stcIrqRegiConf.pfnCallback =&Timer0A_CallBack;
  23.     /* Registration IRQ */
  24.     enIrqRegistration(&stcIrqRegiConf);
  25.     /* Clear Pending */
  26.     NVIC_ClearPendingIRQ(stcIrqRegiConf.enIRQn);
  27.     /* Set priority */
  28.     NVIC_SetPriority(stcIrqRegiConf.enIRQn, DDL_IRQ_PRIORITY_15);
  29.     /* Enable NVIC */
  30.     NVIC_EnableIRQ(stcIrqRegiConf.enIRQn);

  31.     /*config register for channel B */
  32.     stcTimerCfg.Tim0_CounterMode = Tim0_Sync;
  33.     stcTimerCfg.Tim0_SyncClockSource = Tim0_Pclk1;
  34.     stcTimerCfg.Tim0_ClockDivision = Tim0_ClkDiv0;
  35.     stcTimerCfg.Tim0_CmpValue = (uint16_t)(840-1);
  36.     TIMER0_BaseInit(M4_TMR02,Tim0_ChannelB,&stcTimerCfg);

  37.     /* Enable channel B interrupt */
  38.     TIMER0_IntCmd(M4_TMR02,Tim0_ChannelB,Enable);
  39.     /* Register TMR_INI_GCMB Int to Vect.No.002 */
  40.     stcIrqRegiConf.enIRQn = Int002_IRQn;
  41.     /* Select I2C Error or Event interrupt function */
  42.     stcIrqRegiConf.enIntSrc = INT_TMR02_GCMB;
  43.     /* Callback function */
  44.     stcIrqRegiConf.pfnCallback = &Timer0B_CallBack;
  45.     /* Registration IRQ */
  46.     enIrqRegistration(&stcIrqRegiConf);
  47.     /* Clear Pending */
  48.     NVIC_ClearPendingIRQ(stcIrqRegiConf.enIRQn);
  49.     /* Set priority */
  50.     NVIC_SetPriority(stcIrqRegiConf.enIRQn, DDL_IRQ_PRIORITY_15);
  51.     /* Enable NVIC */
  52.     NVIC_EnableIRQ(stcIrqRegiConf.enIRQn);

  53.     /*start timer0*/
  54.     TIMER0_Cmd(M4_TMR02,Tim0_ChannelA,Enable);
  55.     TIMER0_Cmd(M4_TMR02,Tim0_ChannelB,Enable);
  56. }
复制代码


四、实验结果



五、实验总结
      通过Timer0定时器实验,对定时器最基础的使用方法有了一定的了解,为之后定时器其他功能的学习尝试创造了条件。
沙发
| 2020-6-28 08:24 | 只看该作者
谢谢分享,,,,,,,
板凳
 楼主 | 2020-6-28 12:19 | 只看该作者
zeshoufx 发表于 2020-6-28 08:24
谢谢分享,,,,,,,

谢谢捧场!
扫描二维码,随时随地手机跟帖
您需要登录后才可以回帖 登录 | 注册

本版积分规则

我要发帖 投诉建议 创建版块 申请版主

快速回复

您需要登录后才可以回帖
登录 | 注册
高级模式

论坛热帖

申博太阳城AB亚洲馆时时彩计划软件 永利游戏开户直营 返回顶部 返回列表
88赌城娱乐 申博太阳城AB亚洲馆时时彩计划软件 海天娱乐对战 bbin视讯游戏导航 奔驰国际娱乐城登入
菲律宾网上娱乐登入 演艺娱乐城项目电子游戏 聚星娱乐网址 太阳城注册手机APP下载登入 电子游戏作弊软件
尊龙娱乐城 汇丰VR赛车彩票 互博国际注册网站 东盛环亚开户 新濠天地开户
mg老虎机游戏技巧登入 澳门赌场开户网址 金沙百家乐现金直营登入 菲律宾申博太阳城直营网支付宝充值登入 穿越豪门之娱乐hg登入