/*
TIM2初始化函数
返回值:无
参数:定时时间 us
*/
#define CPU_CLK 16027 //主频 KHz
void timer2_Init(ulong us)
{
uchar PSCR = 0; //分频
uint pow;
ulong ARR;
start:
pow=1;
for(uchar i=0;i pow *= 2; } if(us>250000) ARR = (((((us-1)/ 1000) * CPU_CLK) )/pow); else ARR = ((((us-1) * CPU_CLK+500) / 1000)/pow); if(ARR>0xffff) //计算arr是否超出范围 { PSCR++; goto start; } TIM2_PSCR_PSC = PSCR; TIM2_ARRH = (uchar)(ARR>>8); TIM2_ARRL = (uchar)(ARR&0x00ff); TIM2_IER = 0x01; TIM2_CR1 = 0x01; } /* TIM1初始化函数 返回值:无 参数:定时时间 us */ void timer1_Init(ulong us) { uint PSCR = 0; //分频 ulong ARR; start: if(us>250000) //2000000 ARR = (((((us-1)/ 1000) * CPU_CLK) )/(PSCR+1)); else ARR = ((((us-1) * CPU_CLK+500) / 1000)/(PSCR+1)); if(ARR>0xffff) //计算arr是否超出范围 { PSCR++; goto start; } TIM1_PSCRH = (uchar)((PSCR)>>8); TIM1_PSCRL = (uchar)((PSCR) & 0x00ff); //(15+1)分频为1M TIM1_ARRH = (uchar)(ARR>>8); TIM1_ARRL = (uchar)(ARR&0x00ff); //每us中断一次 TIM1_IER = 0x01; //允许更新中断 TIM1_CR1 = 0x01; //计数器使能,开始计数 }
上一篇:解决stm8s003中timer2配置初始化中引起中断更新
下一篇:stm8s003 8K空间不够用,出现报错,修改stvd参数进行最优化
推荐阅读最新更新时间:2024-11-10 12:25
设计资源 培训 开发板 精华推荐
- 使用 ROHM Semiconductor 的 BD48L50G-TL 的参考设计
- 程控运算放大器(原理图,pcb,源程序,实物,仿真)
- LTC3858-2 的典型应用 - 低 IQ、双路 2 相同步降压型控制器
- TB6569FTG 中等电流驱动有刷直流电机驱动器评估板
- LT3756IUD-1 降压-升压模式 LED 驱动器的典型应用电路
- 基于IP5306的充电宝
- HV9910BDB7、HV9910B PFC 40W LED 驱动器演示板
- LM2902VDR2G 函数发生器运算放大器的典型应用
- RT6150A 电流模式降压-升压转换器的典型应用
- KIT-15072,粒子硼 LTE 物联网开发套件