📄 main.c
字号:
/*
PD4对应TIM2通道1
将pd4------- HS1101
*/
#include "stm8s.h"
#include "stm8s_gpio.h"
#include "stm8s_tim2.h"
#include "stm8s_clk.h"
#include "stm8s_uart2.h"
u16 t1,t2,f;
u16 t=0;
void main()
{
// CLK_HSECmd(ENABLE);
//对系统时钟进行配置
//CLK_HSICmd(ENABLE);
// CLK_HSECmd(ENABLE);
CLK_HSIPrescalerConfig(CLK_PRESCALER_HSIDIV2); //HSI为16M,2分频8m
// CLK_SYSCLKConfig(CLK_PRESCALER_CPUDIV2);
//初始化TIM2时钟,通道1,上升沿等参数配置
TIM2_ICInit(TIM2_CHANNEL_1, TIM2_ICPOLARITY_RISING, TIM2_ICSELECTION_DIRECTTI, TIM2_ICPSC_DIV8, 0);
TIM2_Cmd(ENABLE); //使能TIM2计数
TIM2_ClearFlag(TIM2_FLAG_CC1);
UART2_DeInit();
//初始化串口
UART2_Init(38400,UART2_WORDLENGTH_8D,UART2_STOPBITS_1,UART2_PARITY_NO, UART2_SYNCMODE_CLOCK_DISABLE, UART2_MODE_TX_ENABLE);
//串口发送串口初始化完成信息
putStrLine("Yes,The serialport is ok already?");
/* wait a capture on CC1 */
while((TIM2->SR1 & TIM2_FLAG_CC1) != TIM2_FLAG_CC1);
/* Get CCR1 value*/
t1 = TIM2_GetCapture1();
TIM2_ClearFlag(TIM2_FLAG_CC1);
/* wait a capture on CC1 */
while((TIM2->SR1 & TIM2_FLAG_CC1) != TIM2_FLAG_CC1);
/* Get CCR1 value*/
t2 = TIM2_GetCapture1();
TIM2_ClearFlag(TIM2_FLAG_CC1);
t=t2-t1;
f=8*8000000/t;
putInt(f);
putChr('\r');
putChr('\n');
while(1)
{
u32 i=50000;
/* wait a capture on CC1 */
while((TIM2->SR1 & TIM2_FLAG_CC1) != TIM2_FLAG_CC1);
/* Get CCR1 value*/
t1 = TIM2_GetCapture1();
TIM2_ClearFlag(TIM2_FLAG_CC1);
/* wait a capture on CC1 */
while((TIM2->SR1 & TIM2_FLAG_CC1) != TIM2_FLAG_CC1);
/* Get CCR1 value*/
t2 = TIM2_GetCapture1();
TIM2_ClearFlag(TIM2_FLAG_CC1);
t=t2-t1;
f=8*8000000/t;
putInt(f);
putChr('\r');
putChr('\n');
while(i--); //延迟一段时间
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -