蓝桥杯大赛-嵌入式-基本模块快速总结
【模块一】LCD
Lcd液晶驱动函数的改写
添加头文件 #include "stdio.h"
格式化显示
【模块二】LED
void LED_Init(void);
void LED_Control(u16 LED, u8 Status);
void LED_Toggling(u16 LED);
LED 宏定义从GPIO_Pin_8开始
LED灯亮灭控制
LED灯翻转(用于闪烁)
【模块三】Timer
参考库文件路径:TIM/TimeBase main.c 、**it.c
void TIM4_Init(void);
void TIM4_IRQHandler(void)
【模块四】KEY
void KEY_Init(void);
void KEY_Read(void);
void KEY_Process(void);
void Status_Update(void);
Key 驱动按键模式为输入浮空
宏定义
长、短按键检测
根据按键情况更新状态处理完成后,清除以下变量
【模块五】I2C
EEPROM等驱动函数一定要初始化、一定要初始化、一定要初始化
void i2c_init(void);
等待应答函数交换两行代码
添加的读写函数
void Write_AT24c02(u8 add, u8 data);
u8 Read_AT24c02(u8 add);
【模块六】RTC
参考库文件路径:
RTC/ Calendar main.c 、**it.c
RTC_IRQHandler()、Time_Display()、Time_Adjust()、NVIC_Configuration()
RTC/ LSI_Calib main.c
RTC_Configuration()
包含以下函数
void RTC_IRQHandler(void)
void Time_Adjust(uint32_t Tmp_HH, uint32_t Tmp_MM, uint32_t Tmp_SS)
void RTC_Configuration(void)
void NVIC_Configuration(void)
RTC初始化配置函数的注释
注释BKP_RTCOutputConfig(BKP_RTCOutputSource_Second);
防止下载程序后屏幕左3/4灰屏
解决无法显示00:00:00的代码
修改时间调整函数
RTC中断
【模块七】UART
参考库文件路径:
USART/Interrupt main.c 、***it.c
RCC_Configuration(); NVIC_Configuration(); GPIO_Configuration(); USART2_IRQHandler();
USART/Printf main.c
PUTCHAR_PROTOTYPE
包含以下函数
void USART2_Init(void)
void USART2_IRQHandler(void)
int fputc(int ch, FILE *f)
串口初始化函数
改写fputc 函数,实现printf格式化输出函数
串口中断函数
【模块八】ADC
参考库文件路径 :ADC/ADC1_DMA main.c
ADC_Channel8_Init()
100ms采集一次电压
算术平均滤波法处理
其他简便的滤波方法:限幅滤波法、中位值滤波法、滑动平均滤波法、中位值平均滤波法、一阶滞后滤波法等
【模块九】PWM_Output
参考库文件路径 :
TIM/OCToggle/ main.c ***it.c
RCC_Configuration(); NVIC_Configuration(); GPIO_Configuration();
void TIM3_IRQHandler(void)
包含函数
void TIM3_PWM_Init(void);
void TIM3_PWM_CH1(u32 freq, float duty);
PWM 输出注意
TIM2 与TIM3输出模式类似,修改数字后缀即可
OC1 翻转模式
修改TIM3中断函数 实现频率、占空比可调
【模块十】PWM_Capture
参考库文件路径 :
TIM/ InputCapture/ main.c ***it.c
RCC_Configuration(); NVIC_Configuration(); GPIO_Configuration();
void TIM3_IRQHandler(void)
包含函数
void TIM3_Caputer_Init(void)
void TIM3_IRQHandler(void)
TIM_OC1polarityconfig(TIM3, TIM_ICPolarity_Rising)
TIM3_CH1_Freq = (uint32_t) SystemCoreClock / TIM3_CH1_ReadValue2;
TIM3_CH1_Duty = TIM3_CH1_ReadValue1 * 100 / TIM3_CH1_ReadValue2;