概述
/*
* @brief Simple calulate square number.
* @param1 Base number
* @param2 Exponent number
* @retval Number of base^number
* @author: icerol
*/
unsigned long pow(uint base , uint exponent)
{
uint temp = 1;
for(uint i=0; i< exponent; i++)
{
temp *= base;
}
return temp;
}
/*
* @brief Initial timer4 for base timer.
* @param1 Timeout of microsecond
* @retval None
* @author: icerol
*/
void timer4_Init(unsigned int microSecond)
{
unsigned char pscr;
double arr;
double f_tim;
for(pscr=0;pscr<0x08;pscr++)
{
f_tim = F_MASTER/pow(2,pscr);
arr = microSecond/(1000000/f_tim);
if(arr<0xff)
break;
}
TIM4_PSCR_PSC = pscr; //2^1 分频为1M
TIM4_ARR = (unsigned char)arr; //每255us中断一次
TIM4_IER = 0x01; //允许更新中断
TIM4_CR1 = 0x01; //计数器使能,开始计数
}
#define TIM4_OVR_UIF_vector 0x19
#pragma vector = TIM4_OVR_UIF_vector
__interrupt void TIM4_OVR_UIF(void)
{
TIM4_SR_UIF = 0;
PD_ODR_ODR3 = !PD_ODR_ODR3;
}
最后
以上就是想人陪鲜花为你收集整理的STM8 TIM4 自动计算初始化函数的全部内容,希望文章能够帮你解决STM8 TIM4 自动计算初始化函数所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复