提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
一、Timer定时器?
Ch582M是16位的定时器,用起来还可以。嘿嘿而且比STM32配置更简单。
这里吧废话,下面直接用timer0定时器,每100ms让PB4进行电平翻转。
二、Timer定时器配置
1.配置代码
Timer.h
#ifndef __Timer0_H
#define __Timer0_H
#include "CH58x_common.h"
void Timer0_Init(uint32_t t);
#endif
Timer.c
这里要注意了解一下Timer0的定时器触发时间计算。
#include "Timer0.h"
void Timer0_Init(uint32_t t){
GPIOB_SetBits(GPIO_Pin_4);
GPIOB_ModeCfg(GPIO_Pin_4, GPIO_ModeOut_PP_5mA);
//定时器延时计算,这里我们用的60MHZ,就是1S晶振内部跳动60000000次,那么100ms就是6000000次,以此内推
TMR0_TimerInit(t); // FREQ_SYS / 10 设置定时时间 100ms
TMR0_ITCfg(ENABLE, TMR0_3_IT_CYC_END); // 开启中断
PFIC_EnableIRQ(TMR0_IRQn);
}
/*********************************************************************
* @fn TMR0_IRQHandler
*
* @brief TMR0中断函数
*
* @return none
*/
__INTERRUPT
__HIGH_CODE
void TMR0_IRQHandler(void) // TMR0 定时中断
{
if(TMR0_GetITFlag(TMR0_3_IT_CYC_END)) //判断中断标志位
{
TMR0_ClearITFlag(TMR0_3_IT_CYC_END); // 清除中断标志
GPIOB_InverseBits(GPIO_Pin_4); //让PB4电平翻转
}
}
总结
Timer定时器就是这样 ,简单