main.c

来自「STM8s」· C语言 代码 · 共 124 行

C
124
字号

/*
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 + =
减小字号Ctrl + -
显示快捷键?