|
以下是我的代码
#define cnt_clk 180000000/180//计数器频率
#define arr 65535//自定重装载值
uint32_t CCR1,CCR2,end_flag;//存捕获寄存器获取的值的变量
float duty_cycle,frequency;//频率,占空比
int main(void)
{
/* USER CODE BEGIN 1 */
/* USER CODE END 1 */
/* MCU Configuration--------------------------------------------------------*/
/* Reset of all peripherals, Initializes the Flash interface and the Systick. */
HAL_Init();
/* USER CODE BEGIN Init */
/* USER CODE END Init */
/* Configure the system clock */
SystemClock_Config();
/* USER CODE BEGIN SysInit */
/* USER CODE END SysInit */
/* Initialize all configured peripherals */
MX_GPIO_Init();
MX_TIM8_Init();
/* USER CODE BEGIN 2 */
HAL_TIM_IC_Start_IT(&htim8, HAL_TIM_ACTIVE_CHANNEL_1);
HAL_TIM_IC_Start_IT(&htim8, HAL_TIM_ACTIVE_CHANNEL_2);
/* USER CODE END 2 */
/* Infinite loop */
/* USER CODE BEGIN WHILE */
while (1)
{
/* USER CODE END WHILE */
/* USER CODE BEGIN 3 */
}
/* USER CODE END 3 */
}
void HAL_TIM_IC_CaptureCallback(TIM_HandleTypeDef *htim)
{
if(htim == &htim8)
{
CCR1=HAL_TIM_ReadCapturedValue(&htim8, TIM_CHANNEL_1);
if(CCR1!=0)
{
CCR2=HAL_TIM_ReadCapturedValue(&htim8, TIM_CHANNEL_2);
frequency=(float)cnt_clk/(CCR1+1);
duty_cycle=(float)(CCR2+1)*100/(CCR1+1);
end_flag=1;
}
else
{
frequency=0;
duty_cycle=0;
}
}
}
/* USER CODE END 4 */
|
|