[Wi-Fi/蓝牙/Zigbee…] 【WFI32E04分享】-3-体验定时器模块TIMER2

[复制链接]
242|0
南来之风 发表于 2025-11-9 20:28 | 显示全部楼层 |阅读模式
本帖最后由 南来之风 于 2025-11-9 20:31 编辑

硬件定时器模块在项目上应用非常广泛。PIC32MZ W1系列器件有六个可操作的同步16位定时器(默认),作为自由运行的间隔计时器,用于各种定时
应用程序和外部事件计数。支持以下模式:
  • 同步内部16位定时器模式
  • 同步内部16位门控定时器模式
  • 同步外部16位定时器模式

使用下面的三种组合,可以实现三个32位同步定时器
  • Timer2与Timer3、
  • Timer4与Timer5结合,
  • Timer6与Timer7。

32位定时器可以在三种模式下工作:
  • 同步内部32位定时器模式
  • 同步内部32位门控定时器模式
  • 同步外部32位定时器模式

这些计时器具有以下主要功能:
  • 可选择的时钟预分频器
  • 定时器操作在CPU空闲模式
  • 输入捕获和输出比较的时间基础模块(Timer2到Timer7仅限)
  • ADC事件触发(仅Timer3和Timer5)
  • 使用CLR, SET和INV进行快速位操作寄存器

定时器系统框图如下:



本次体验TIMER2的基础功能,用于实现100ms的定时器中断。


1. MCC中Device Resources -> Peripherals -> TIMER2,点击绿色➕:




2. 配置TMR2时钟分配系数,设置定时周期为100毫秒。





3. 点击Generate,自动生成代码。



4. 定义定时器中断回调函数:
  1. void TMR2_CB(uint32_t status, uintptr_t context){
  2.     static uint32_t i = 0;
  3.     i++;
  4.     if(i%10 == 0){
  5.         GPIO_RK3_GREEN_Toggle();
  6.         GPIO_RK1_RED_Toggle();
  7.         sprintf(string2Uart, "\r\nHello MCHP, Time Elasped %d S", i/10);
  8.         UART1_Write((void *)string2Uart, sizeof(string2Uart)/sizeof(string2Uart[0]));
  9.     }
  10. }


5. 注册回调函数:
  1. TMR2_CallbackRegister(TMR2_CB, 0);



6. 启动TIMER2模块:
  1. TMR2_Start();


效果:每秒钟切换LED状态,串口打印相应的数据。

演示:




本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

×
您需要登录后才可以回帖 登录 | 注册

本版积分规则

76

主题

304

帖子

2

粉丝
快速回复 在线客服 返回列表 返回顶部