蓝桥杯备赛——第八届国赛(频率控制器)



前言

考察的模块有:输入捕获(PULS1、PULS2)、ADC(AO1、AO2)、方波输出(PA6、PA7)、EEPROM


一、cubeMX配置

1.PULS1——PA1(TIM2_CH2)

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

2.PULS2——PA2(TIM15_CH1)

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

二.相关代码

1.方波输出的分频和倍频

void HAL_TIM_OC_DelayElapsedCallback(TIM_HandleTypeDef *htim)
{
	if(htim->Instance == TIM3)
	{
		if(htim->Channel == HAL_TIM_ACTIVE_CHANNEL_1)
		{
			__HAL_TIM_SET_COMPARE(htim, TIM_CHANNEL_1, (__HAL_TIM_GetCounter(htim) + HAL_TIM_ReadCapturedValue(&htim2, TIM_CHANNEL_2) / 2 * Dividing));
		}
		else if(htim->Channel == HAL_TIM_ACTIVE_CHANNEL_2)
		{
			__HAL_TIM_SET_COMPARE(htim, TIM_CHANNEL_2, (__HAL_TIM_GetCounter(htim) + HAL_TIM_ReadCapturedValue(&htim15, TIM_CHANNEL_1) / 2 / Doubling));
		}
	}
}

2.如何将方波在关闭时变为低电平输出(方波关闭时默认为高电平)

void Output_Ctrl(_Bool State)
{
	GPIO_InitTypeDef GPIO_InitStruct = {0};
	GPIO_InitStruct.Pin = GPIO_PIN_6|GPIO_PIN_7;
	if(State == 1)
	{
		GPIO_InitStruct.Mode = GPIO_MODE_AF_PP;
		GPIO_InitStruct.Alternate = GPIO_AF2_TIM3;
	}
	else
	{
		GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;
	}
    GPIO_InitStruct.Pull = GPIO_NOPULL;
	GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;
	
	HAL_GPIO_Init(GPIOA, &GPIO_InitStruct);
}

3.AO2电压不稳定,对其进行滤波处理(AO1也进行滤波)

void ADC_Proc(void)
{
	uint16_t ADC_Buf[10];
	uint16_t temp;
	
	if((uwTick - uwTick_ADC_Set_Point) <= 20)
		return;
	uwTick_ADC_Set_Point = uwTick;
	
	for(int i = 0; i < 10; i++)
	{
		ADC_Buf[i] = Get_ADC2_AO1();
	}
	for(int i = 0; i <= 5; i++)
	{
		for(int j = 0; j < 9 - i - 1; j++)
		{
			if(ADC_Buf[j] > ADC_Buf[j + 1])
			{
				temp = ADC_Buf[j + 1];
				ADC_Buf[j + 1] = ADC_Buf[j];
				ADC_Buf[j] = temp;
			}
		}
	}
	ADC_Value_AO1 = (ADC_Buf[4] + ADC_Buf[5]) / 2 / 4095. * 3.3;
	
	for(int i = 0; i < 10; i++)
	{
		ADC_Buf[i] = Get_ADC2_AO2();
	}
	for(int i = 0; i <= 5; i++)
	{
		for(int j = 0; j < 9 - i - 1; j++)
		{
			if(ADC_Buf[j] > ADC_Buf[j + 1])
			{
				temp = ADC_Buf[j + 1];
				ADC_Buf[j + 1] = ADC_Buf[j];
				ADC_Buf[j] = temp;
			}
		}
	}
	ADC_Value_AO2 = (ADC_Buf[4] + ADC_Buf[5]) / 2 / 4095. * 3.3;
}

三.细节问题

  1. 虽AO2电压值不稳定,但官方代码并未对其进行滤波处理。
  2. 若采用方波输出(Output Compare),则发现分频/倍频时频率输出不稳定,且存在误差较大的情况;若采用PWM输出,则对于同一定时器的两路输出无法单独改变任何一路的输出频率。

四. 总结

第八届国赛难度较为简单,但仍有一些细节需要处理。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值