蓝桥杯
注意事项
移植lcd之后要记得在main函数内LCD_Init();开启lcd。
如果lcd显示时led全亮大概率是PD2锁存器出问题
lcd显示最好都各自带一个char text[30];
按键按下表启动,进入下一步
adc一定要在main开启校准函数HAL_ADCEx_Calibration_Start(&hadc2,ADC_SINGLE_ENDED);记住Calibration和ADC_SINGLE_ENDED
adc自写函数里每一次最好都开启一遍HAL_ADC_Start(hadc);
adc自写函数里value=HAL_ADC_GetValue(hadc);用uint32_t存储,之后转换到float数
adc的转换先乘以3.3再除以4096,顺序反了就归零了
串口发送简单,接收需要中断函数void HAL_UART_RxCpltCallback(UART_HandleTypeDef *huart);
把串口接收单数据和数据数组分开写,用于接收的单数据是uint8_t类型,不是char类型
接收的数据数组是char类型
单数据接收函数HAL_UART_Receive_IT(&huart1,&data,1);最后接收的长度是1,而且中间的单数据必须取地址,这里接收函数最好用中断模式
要先在主函数写一个HAL_UART_Receive_IT(&huart1,&data,1);用来开启
1 | //串口接收函数,没有写道串口中断函数内部,注意 |
15.
1 | //主函数串口接收处理 |
发送数据函数HAL_UART_Transmit(&huart1,(uint8_t *)text1,strlen(text1),50);中间的char类型text要强制转换(uint8 *),发送函数最好别用中断模式,第三个长度用strlen,最后一个数记为50
memset函数用法memset(datas,0,30);最后一个直接写数字就好
主函数需要开启pwm定时器HAL_TIM_PWM_Start(&htim17,TIM_CHANEL_1);
改变占空比函数__HAL_TIM_SET_COMPARE
基础定时器(定时中断功能):开启示例HAL_TIM_Base_Start_IT(&htim3);使用中断模式
1 | //main.h补全头文件 |
产品手册










初始配置





然后创建工程代码
LED


1 | //led.c |
1 | //led.h |
LED第二种写法
1 | void Led_Set(unsigned char t) |
key按键
选用基本定时器的定时功能来实现延时操作和检验按键状态



1 | //interrupt.c |
1 | //interrupt.h |
1 | //main.c |
1 | graph TD |
后面修改了下逻辑,松开后再判断长短,上面的代码没改哦
1 | graph TD |
按键第二种写法(滴答定时器)
1 |
|
按键双击

1 | //双击 |
按键长按

LCD

LCD的cubemx配置配置对应IO口为输出即可,也可以不配置,直接copy数据包代码


1 | //main.c |
定时器输出PWM
共10个定时器分别为
2个基本定时器(TIM6和ITIM7) 。
3个通用定时器(TIM2TIM4) :全功能通用定时器。TIM17):只有1个或者2个通道。
3个通用定时器(TIM15
2个高级控制定时器(TIM1和ITIM8) 。
以下是基本定时器的输出PWM配置 


1 | //main.c |
输入捕获定时器
共10个定时器分别为
2个基本定时器(TIM6和ITIM7) 。
3个通用定时器(TIM2TIM4) :全功能通用定时器。TIM17):只有1个或者2个通道。
3个通用定时器(TIM15
2个高级控制定时器(TIM1和ITIM8) 。
两个555定时器生成占空比为50%的脉冲通过IO口PA15和PB4输入,电阻R40,R39调节可以改变信号脉冲的频率。




1 | //interrupt.c |
1 | //interrupt.h |
1 | //main.c |
ADC数模转换
电压从0v到3.3v的变化

1 | //psbadc.c |
1 | //bspadc.h |
1 | //main.c |
I2C读写eeprom
需要将PB6,PB7设置为输出模式



0XA0:写,0XA1:读(01与MPC相同,看手册)
I2C读取写入eeprom、MPC
1 | uint8_t MPC_read(void) |
在main中的实际操作
1 | //main.c |
USART通信



USART发送
1 | //main.c |
UART接收
1 | //main.c |
RTC时钟

1 | void RTC_Process(void) |
滴答计时器使用方法
1 | //定时50ms发送---代码格式 |