蓝桥杯有感。

今天去南大考完了蓝桥杯省赛,感觉到了自己还是有很多不足的地方。

首先,对于读代码能力的低下,导致自己读代码都无法读懂,对于分而治之的思想不够熟练,还有对于自己加入测试用例的技巧还没有掌握。

填空题中,对于自己一开始就注意到的点,再继续思考的时候竟然没有想到,比如这次的3部手机测试高度的题目,简直对答案的时候要把自己给笑死。

螺旋曲线的题目花了太多的时间思考了,对于代码分析的细致能力还有待提高。

后面的编程大题几乎没有怎么写。少了两道题目。连暴力都没有打上去,虽然ACM是要AC的,但是蓝桥杯是分点给分,暴力还是有挺多分的。

大题应该有挺多动态规划的内容,但是自己还是太心急了,没有仔仔细细下去想,直接就放弃了大题,我qtm的。

我我我我,还是太摸了啊!

### 蓝桥杯 LED 编程题解及相关技术实现 #### 1. 嵌入式开发中的LED控制基础 在嵌入式系统中,LED通常作为最简单的外设之一被用来验证硬件电路的功能以及测试软件逻辑。通过GPIO(通用输入/输出端口),可以轻松地驱动单个或多个LED。对于蓝桥杯比赛而言,LED的应用不仅限于点亮和熄灭操作,还可能涉及复杂的模式切换、亮度调节等功能。 例如,在某些题目中会要求选手完成如下功能: - 使用定时器配合中断机制来周期性改变LED的状态[^1]。 - 利用PWM(脉宽调制)调整LED的亮度[^2]。 以下是基于STM32微控制器的一个简单示例代码片段用于控制LED: ```c #include "stm32f4xx_hal.h" void GPIO_Init(void){ __HAL_RCC_GPIOA_CLK_ENABLE(); //使能GPIOA时钟 GPIO_InitTypeDef GPIO_InitStruct = {0}; /* 配置PA5为推挽输出 */ GPIO_InitStruct.Pin = GPIO_PIN_5; 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); } int main(void){ HAL_Init(); GPIO_Init(); while (1){ HAL_GPIO_TogglePin(GPIOA, GPIO_PIN_5); //切换PA5引脚状态 HAL_Delay(500); //延时500ms } } ``` 此代码展示了如何初始化一个GPIO引脚并将它设置成输出模式以便连接到外部LED上;接着在一个无限循环里不断反转该引脚电平从而让相连的LED闪烁起来。 #### 2. PWM信号生成与LED亮度调控 除了基本开关之外,利用PWM还可以进一步实现对LED亮度动态变化的效果展示。具体来说就是通过对占空比参数的不同设定达到渐亮或者呼吸灯效果的目的。下面给出一段关于创建并配置TIM2计数器产生PWM波形的例子: ```c static void MX_TIM2_Init(void){ TIM_ClockConfigTypeDef sClockSourceConfig = {0}; TIM_MasterConfigTypeDef sMasterConfig = {0}; TIM_OC_InitTypeDef sConfigOC = {0}; htim2.Instance = TIM2; htim2.Init.Prescaler = 8399;//预分频系数=84M/(目标频率*Prescaler)=1KHz htim2.Init.CounterMode = TIM_COUNTERMODE_UP; htim2.Init.Period = 999 ;//自动重装载寄存器ARR值=期望周期减去一 htim2.Init.ClockDivision = TIM_CLOCKDIVISION_DIV1; if (HAL_TIM_Base_Init(&htim2) != HAL_OK) Error_Handler(); sClockSourceConfig.ClockSource = TIM_CLOCKSOURCE_INTERNAL; if (HAL_TIM_ConfigClockSource(&htim2,&sClockSourceConfig)!= HAL_OK ) Error_Handler(); if(HAL_TIM_PWM_Init(&htim2)!= HAL_OK ) Error_Handler(); sMasterConfig.MasterOutputTrigger = TIM_TRGO_RESET ; sMasterConfig.MasterSlaveMode = TIM_MASTERSLAVEMODE_DISABLE; if(HAL_TIMEx_MasterConfigSynchronization(&htim2 ,&sMasterConfig)!= HAL_OK ) Error_Handler(); sConfigOC.OCMode = TIM_OCMODE_PWM1; sConfigOC.Pulse = 500; //初始占空比50% sConfigOC.OCPolarity = TIM_OCPOLARITY_HIGH; sConfigOC.OCFastMode = TIM_OCFAST_DISABLE; if(HAL_TIM_PWM_ConfigChannel(&htim2,&sConfigOC,TIM_CHANNEL_1)!= HAL_OK ) Error_Handler(); HAL_TIM_PWM_Start(&htim2,TIM_CHANNEL_1); } ``` 上述代码设置了定时器的工作方式及时基单元的各项属性之后开启通道1上的PWM输出服务。其中`Pulse`变量决定了当前时刻下实际作用时间相对于整个周期的比例关系即所谓的“占空比”,进而影响最终呈现出来的视觉感受——越接近最大数值则显得更明亮反之亦然. #### 3. 复杂场景下的应用实例分析 考虑到竞赛环境可能存在更多干扰因素比如电源波动等因素的影响所以还需要额外加入一些保护措施确保整体运行稳定可靠如过流检测等附加模块的设计思路探讨也可以成为深入研究的方向之一. ---
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值