本次实验分享的是合泰HT32F52352中的基本定时器BFTM的使用,通过定时器实现LED的1s闪烁 在合泰HT32F52352系统中一共有5种定时器
实验效果
了解HT32F52352单片机内核特性
1、马达控制定时器 – MCTM
2、PWM 产生和捕捉定时器 – GPTM
3、单通道产生与捕捉定时器 – SCTM
4、基本功能定时器 – BFTM
5、看门狗定时器 – WDT
time.c
#include "time.h"
#include "led.h"
#include "uart.h"
uint16_t count = 0;
uint8_t led_flag = 0;
void Timer_Init(void)
{
CKCU_PeripClockConfig_TypeDef CKCUClock= {{0}};
CKCUClock.Bit.BFTM1 = 1;
CKCU_PeripClockConfig(CKCUClock, ENABLE);
NVIC_EnableIRQ(BFTM1_IRQn);
BFTM_SetCounter(HT_BFTM1, 0);
BFTM_SetCompare(HT_BFTM1, SystemCoreClock/1000);
BFTM_IntConfig(HT_BFTM1, ENABLE);
BFTM_EnaCmd(HT_BFTM1, ENABLE);
}
void BFTM1_IRQHandler(void)
{
if(BFTM_GetFlagStatus(HT_BFTM1) != RESET )
{
count++;
if(count == 1000)
{
printf("-------------LED 1S FLASH TEST------------\n");
count = 0;
if(led_flag == 0)
{
LED1_ON();
led_flag = 1;
}
else if(led_flag == 1)
{
led_flag = 0;
LED1_OFF();
}
}
BFTM_ClearFlag(HT_BFTM1);
}
}
time.h
#ifndef _TIME_H_
#define _TIME_H_
#include "ht32f5xxxx_bftm.h"
void Timer_Init(void);
#endif
main.c
#include "ht32.h"
#include "ht32_board.h"
#include "led.h"
#include "delay.h"
#include "uart.h"
#include "time.h"
int main()
{
Led_Init();
Timer_Init();
USARTx_Init();
printf("---------Time Test------\n");
while(1)
{
}
}
对系统时钟进行分析
我们点击SystemCoreClock进行跳转,然后去将每个参数记录下来
32-bit ARM? CortexTM-M0+ 处理器内核
高达 48MHz 的工作频率
系统时钟分析
SystemCoreClock = __CK_AHB
__CK_AHB (__CK_SYS >> HCLK_DIV)
HCLK_DIV (0)
以上就是对HT32F52352通用定时器的基本使用
|