RISC-V MCU应用教程之定时器中断

RISC-V MCU应用教程之定时器中断

简介

CH32V103系列是以青稞V3A处理器为核心的32位通用MCU,该处理器是基于RISC-V开源指令集设计。片上集成了时钟安全机制、多级电源管理、通用DMA控制器。此系列具有1路USB2.0主机/设备接口、多通道12位ADC转换模块、多通道TouchKey、多组定时器、多路IIC/USART/SPI接口等丰富的外设资源。

本章教程通过CH32V103开发板板载两个LED灯显示程序运行状态,具体情况如下:

(1)串口调式助手大约每隔500ms打印一次”Enter interrupt“;

(2)开发板上LED1与LED2不停闪烁,其中,LED1闪烁较快,大约为100ms一次;LED2闪烁较慢,大约为500ms闪烁一次。

1、TIM简介及相关函数介绍

CH32V103定时器包含1个高级16位定时器、3个通用16位定时器,以及2个看门狗定时器和1个系统时基定时器。

高级控制定时器(TIM1)是一个 16 位的自动装载计数器,具有可编程的预分频器。除了完整的通用定时器功能外, 可以被看成是分配到 6 个通道的三相 PWM 发生器, 具有带死区插入的互补 PWM 输出功能,允许在指定数目的计数器周期之后更新定时器进行重复计数周期,刹车功能等。高级控制定时器的很多功能都与通用定时器相同,内部结构也相同,因此高级控制定时器可以通过定时器链接功能与 TIM 定时器协同操作,提供同步或事件链接功能。

通用定时器(TIM2、TIM3和TIM4),其可同步运行,每个定时器都有一个 16 位的自动装载递加/递减计数器、一个可编程的 16 位预分频器和 4 个独立的通道,每个通道都可用于输入捕获、输出比较、 PWM 生成和单脉冲模式输出。其能通过定时器链接功能与高级控制定时器共同工作,提供同步或事件链接功能。在调试模式下,计数器可以被冻结,同时 PWM 输出被禁止,从而切断由这些输出所控制的开关。 任意通用定时器都能用于产生 PWM 输出。每个定时器都有独立的 DMA 请求机制。这些定时器还能够处理增量编码器的信号,也能处理 1 至 3 个霍尔传感器的数字输出。

系统时基定时器(SysTick),这是内核控制器自带的一个定时器,用于产生 SYSTICK 异常,可专用于实时操作系统,为系统提供“心跳”节律,也可当成一个标准的64位递增计数器。以AHB时钟的8分频为基准时钟源。当计数器递增到设置比较值时,产生一个可屏蔽系统中断。关于2个看门狗定时器,在前面教程有过介绍,在此不做过多赘述。

关于CH32V103定时器具体信息及其相关功能和实现等,可参考CH32V103数据手册和应用手册。本章教程主要通过CH32V103通用定时器TIM3编写一个定时器中断程序,并下载到开发板进行验证,程序编写所需相关函数在库函数中进行调用,库函数文件中函数介绍如下:

1.1、void TIM_DeInit(TIM_TypeDef* TIMx)

功  能:将TIMx外围寄存器初始化为其默认重置值。

输  入:无

1.2、void TIM_TimeBaseInit(TIM_TypeDef* TIMx, TIM_TimeBaseInitTypeDef* TIM_TimeBaseInitStruct)

功  能:根据TIM_TimeBaseInitStruct中指定的参数初始化TIMx时基单元外围设备。

输  入:TIMx:其中x可以是1到4来选择TIM外围设备;TimeBaseInitStruct:指向TIM_TimeBaseInitTypeDef结构的指针。

1.3、void TIM_OC1Init(TIM_TypeDef* TIMx, TIM_OCInitTypeDef* TIM_OCInitStruct)

功  能:根据TIM_OCInitStruct中指定的参数初始化TIMx Channel1。

输  入:TIMx:其中x可以是1到4来选择TIM外围设备;TIM_OCInitStruct:指向TIM_OCInitTypeDef结构的指针。

1.4、void TIM_ICInit(TIM_TypeDef* TIMx, TIM_ICInitTypeDef* TIM_ICInitStruct)

功  能:根据TIM_ICInitStruct中指定的参数初始化TIM外围设备。

输  入:TIMx:其中x可以是1到4来选择TIM外围设备;TIM_ICInitStruct:指向TIM_ICInitTypeDef结构的指针。

1.5、void TIM_PWMIConfig(TIM_TypeDef* TIMx, TIM_ICInitTypeDef* TIM_ICInitStruct)

功  能:根据TIM结构中的指定参数配置TIM外围设备,以测量外部PWM信号。

输  入:TIMx:其中x可以是1到4来选择TIM外围设备;TIM_ICInitStruct:指向TIM_ICInitTypeDef结构的指针。

1.6、void TIM_BDTRConfig(TIM_TypeDef* TIMx, TIM_BDTRInitTypeDef *TIM_BDTRInitStruct)

功  能:配置:中断特性、死区时间、锁定级别、OSSI、OSSR状态和AOE(自动输出启用)。

输  入:TIMx:其中x可以是1到4来选择TIM外围设备;TIM_BDTRInitStruct:指向TIM_BDTRInitTypeDef结构的指针。

1.7、void TIM_TimeBaseStructInit(TIM_TimeBaseInitTypeDef* TIM_TimeBaseInitStruct)

功  能:用默认值填充每个TIM_TimeBaseInitStruct成员。

输  入:TimeBaseInitStruct:指向TIM_TimeBaseInitTypeDef结构的指针。

1.8、void TIM_OCStructInit(TIM_OCInitTypeDef* TIM_OCInitStruct)

功  能:用默认值填充每个TIM_OCInitStruct成员。

输  入:TIM_OCInitStruct:指向TIM_OCInitTypeDef结构的指针。

  • 0
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值