历史上的今天
今天是:2024年11月25日(星期一)
2019年11月25日 | STM8S103之tim2捕获周期
2019-11-25 来源:eefocus
1.系统时钟初始化为内部16M
CLK_HSIPrescalerConfig(CLK_PRESCALER_HSIDIV1); //时钟 初始化时钟为1分频 16M 2分频8M
2.初始化定时器2设置PD3为捕获输入
void Init_Timer2(void)
{
GPIO_Init(GPIOD, GPIO_PIN_3, GPIO_MODE_IN_FL_NO_IT);//输入 无中断
TIM2_DeInit();
TIM2_TimeBaseInit(TIM2_PRESCALER_16, 10000-1); //16分频, 1MHZ 10000 = 10ms 溢出
TIM2_ICInit(TIM2_CHANNEL_2, TIM2_ICPOLARITY_RISING, TIM2_ICSELECTION_DIRECTTI, TIM2_ICPSC_DIV1, 0x00); //设置通道 设置输入捕获上升触发 捕获输入引脚 输入捕捉预定标器 滤波
TIM2_ClearFlag(TIM2_FLAG_CC2); //指定要清除的标志
TIM2_ITConfig(TIM2_IT_UPDATE, ENABLE); //使能向上计数功能
TIM2_ITConfig(TIM2_IT_CC2, ENABLE); //使能输入捕获通道2
TIM2_Cmd(ENABLE);
}
3.编写主函数
void main(void)
{
CLK_HSIPrescalerConfig(CLK_PRESCALER_HSIDIV1); //内部时钟16M
Init_UART1();
Init_Timer2();
enableInterrupts();
while(1);
}
4、编写中断服务函数
uint8_t fet;
INTERRUPT_HANDLER(TIM2_UPD_OVF_BRK_IRQHandler, 13)
{
fet++;
TIM2_ClearITPendingBit(TIM2_IT_UPDATE);
/* In order to detect unexpected events during development,
it is recommended to set a breakpoint on the following instruction.
*/
}
/**
* @brief Timer2 Capture/Compare Interrupt routine.
* @param None
* @retval None
*/
INTERRUPT_HANDLER(TIM2_CAP_COM_IRQHandler, 14)
{
if(TIM2_GetITStatus(TIM2_IT_CC2) != RESET) //如果CH2边沿触发
{
static uint8_t buf[12];
static uint16_t set_num1,set_num2;
static uint8_t timer1,timer2;
static uint8_t num;
uint8_t len = 0;
uint16_t fre = 0;
num++;
if(num == 1)
{
set_num1 = TIM2_GetCapture2();
timer1 = fet;
}
else if(num == 2)
{
num = 0;
set_num2 = TIM2_GetCapture2();
timer2 = fet;
fet = 0;
fre = 1000000 / ((timer2*10000+set_num2) - (timer1*10000+set_num1));
buf[len++]=fre/10000%10+'0';
buf[len++]=fre/1000%10+'0';
buf[len++]=fre/100%10+'0';
buf[len++]=fre/10%10+'0';
buf[len++]=fre%10+'0';
buf[len++]= 'n';
UART1_Send(buf,6);
}
}
TIM2_ClearITPendingBit(TIM2_IT_CC2);
}
5、结果

输出100Hz,实验成功。
下一篇:stm8s io配置
史海拾趣
|
电子设备高频化是发展趋势,尤其在无线网络、卫星通讯的日益发展,信息产品走向高速与高频化,及通信产品走向容量大速度快的无线传输之语音、视像和数据规范化.因此发展的新一代产品都需要高频基板。 &n ...… 查看全部问答> |
|
此程序包包含MSP430单片机各个模块的程序应用,并且每个模块都有多个程序举例,通过对它们的学习,相信你的对430的理解更上一层楼!有不足之处请大家批评指正!… 查看全部问答> |
|
Warning:Found xx output pins without output pin load capacitance assignment原因:没有给输出管教指定负载电容解决方法:该功能用于估算TCO和功耗,可以不理会,也可以在Assignment Editor中为相应的输出管脚指定负载电容,以消除警告… 查看全部问答> |
|
2450 eboot下载超过40M的NK就DNW0.6就死掉怎么回事? 如题。下个20多M的NK很正常。下载40M的话DNW的进度条走三分之二就死了。 以下是一些打印信息: _OEMPlatformInit. System ready! Preparing for download... +OEMPreDownload. Please send the Image through USB. +OEMReadData. +OEMReadD ...… 查看全部问答> |
|
我用三片CD4094来驱动15段数码管,一片用作数码管的位选,另两片级联起来显示数据,我想问一下,我的显示码是先发送低位还是高位,也就是怎样发送才能让串行数据和4094转换后的并行数据对应起来!… 查看全部问答> |
|
vxworks大量问题,请高手指教!!!大家多交流阿!!谢谢!!! 最近遇到不少问题,请高手指教!! 我用的是基于G4平台的嵌入式VxWorks系统,芯片是ppc 7447A,vxworks5.5.1 1.很奇怪的现象:把虚拟控制台(console and redirection)关了以后,处理机箱的输出没信号,不知是什么原因,虚拟控制台到底对系统有什 ...… 查看全部问答> |
|
最近刚按别人提供的原理图做了一块2812的板子,板上有外扩RAM,flash和ADS8361等 画图、pcb制板和焊接都是自己亲手做的,由于全是第一次动手做,很费事,也走了很多冤枉路。 前两天刚好全部焊接好,很激动的通上电调试 ...… 查看全部问答> |




