蓝桥杯嵌入式总结

1.lcd显示和led引脚冲突

在lcd使用到的函数中加入两行代码

uint16_t temp = GPIOC->ODR;

GPIOC->ODR = temp;

2.关于PA15,PB4pwm波输入捕获

首先pwm输入捕获中断

使用 HAL_TIM_IC_Start_IT(&htim2,TIM_CHANNEL_1);

再在输入捕获中断回调函数中使用

void HAL_TIM_IC_CaptureCallback(TIM_HandleTypeDef *htim)

{

if(htim->Instance == TIMx)

{

caputure = HAL_TIM_ReadCapturedValue(&htimx,TIM_Channel_1);

fre = 80000000/(80*caputure); //或者是fre = 1000000/caputure;

}

}

3.关于定时器的定时中断

首先要打开中断,使用 HAL_TIM_Base_Init(&htim2);

再使用这个void HAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef *htim);

4.关于ADC采集

double get_vol(ADC_HandleTypeDef *hadc)

{

HAL_ADC_Start(hadc);

uint32_t adc_value = HAL_ADC_GetValue(hadc);

return 3.3*adc_value/4096;

}

5.led灯点亮

void led_show(uint8_t led,uint8_t state)

{

HAL_GPIO_WritePin(GPIOD, GPIO_PIN_2, GPIO_PIN_SET);

if(state) HAL_GPIO_WritePin(GPIOC, GPIO_PIN_8<<(led-1), GPIO_PIN_RESET);

else HAL_GPIO_WritePin(GPIOC, GPIO_PIN_8<<(led-1), GPIO_PIN_SET);

HAL_GPIO_WritePin(GPIOD, GPIO_PIN_2, GPIO_PIN_RESET);

}

6.修改占空比和波的频率

频率:TIMx->ARR = xx;

波的占空比:TIMx->CCR =xx;

复制代码
// 修改PWM频率
TIM2->ARR = 1000000 / fre4000 - 1; // 通过修改ARR的值来改变PWM波的频率

// 修改PWM占空比
TIM2->CCR2 = P_duty * (TIM2->ARR + 1) / 100; // 通过修改CCR的值来改变PWM波的占空比

7.系统滴答计时器延时2s

start_tick = HAL_GetTick();

if(HAL_GetTick()-start_tick >=2000)

相关推荐
寒页_1 小时前
2025年第十六届蓝桥杯省赛真题解析 Java B组(简单经验分享)
java·数据结构·经验分享·算法·蓝桥杯
汇太浪2 小时前
第十六届蓝桥杯大赛软件赛省赛 Python 大学 B 组 部分题解
蓝桥杯
邪神与厨二病3 小时前
2025蓝桥杯python A组题解
数据结构·c++·python·算法·蓝桥杯·单调栈·反悔贪心
ExtractStars5 小时前
2025 蓝桥杯省赛c++B组个人题解
c++·蓝桥杯
小徐Chao努力5 小时前
【蓝桥杯】第十六届蓝桥杯 JAVA B组记录
java·蓝桥杯
梭七y6 小时前
【力扣hot100题】(089)最长有效括号
算法·leetcode·职场和发展
柒_汐6 小时前
第十五届蓝桥杯C/C++B组省赛真题讲解(分享去年比赛的一些真实感受)
c语言·c++·蓝桥杯·真题·省赛
lzb7596 小时前
蓝桥杯单片机刷题——ADC测量电位器的电压
单片机·蓝桥杯
nuo5342027 小时前
第十六届蓝桥杯 省赛C/C++ 大学B组
c语言·c++·算法·蓝桥杯·图论
ん贤8 小时前
2021第十二届蓝桥杯大赛软件赛省赛C/C++ 大学 B 组
c语言·c++·蓝桥杯