嵌入式|蓝桥杯STM32G431(HAL库开发)——CT117E学习笔记16:蓝桥杯编程手册
一、要背的函数汇总(以例子形式)
1.GPIO相关
输出:HAL_GPIO_WritePin(GPIOC,GPIO_PIN_8 | GPIO_PIN_9,GPIO_PIN_SET)
输入:HAL_GPIO_ReadPin(GPIOB, GPIO_PIN_0)
翻转:HAL_GPIO_TogglePin(GPIOC,0xFF)
2.LCD相关
格式化输出:sprintf((char*)buf,"%d",val) (要包含stdio.h)
显示:LCD_DisplayStringLine(Line1,buf)
3.ADC相关
启动转换:HAL_ADC_Start(&hadc1)
获取数字量:HAL_ADC_GetValue(&hadc1)
4.I2C相关
开始:I2CStart()
停止:I2CStop()
发送:I2CSendByte(0xA0)
接收:I2CReceiveByte()
应答:I2CWaitAck()
非应答:I2CSendNotAck()
定时:HAL_Delay(5)
5.串口相关
初始化:MX_USART1_UART_Init()
串口发送:HAL_UART_Transmit(&huart1,(unsigned char *)&ch,1,50)
重定向:help搜retarget第三个
串口接收中断:HAL_UART_Receive_IT(&huart1,uart_buf,1)
中断回调:HAL_UART_RxCpltCallback(UART_HandleTypeDef *huart)
6.DAC相关(12位右对齐)
设置数字量:HAL_DAC_SetValue(&hdac1,DAC_CHANNEL_1,DAC_ALIGN_12B_R,1365)
转换成模拟量:HAL_DAC_Start(&hdac1,DAC_CHANNEL_1)
7.RTC
获取时间:HAL_RTC_GetTime(&hrtc,&rtc_time,RTC_FORMAT_BIN)
获取日期:HAL_RTC_GetDate(&hrtc,&rtc_date,RTC_FORMAT_BIN)
8.PWM捕获
开启中断:HAL_TIM_IC_Start_IT(&htim2,TIM_CHANNEL_1)
中断回调:HAL_TIM_IC_CaptureCallback(TIM_HandleTypeDef *htim)
获取计数器:tim2_cnt = __HAL_TIM_GetCounter(&htim2)
设置计数器: __HAL_TIM_SetCounter(&htim2,0)
9.PWM输出
启动输出:HAL_TIM_PWM_Start(&htim17,TIM_CHANNEL_1)
二、流程
1.打开资源数据包,找到LCD参考程序并复制。
2.更改名字为G+准考证,并更改MX文件为同名。
3.然后删除MDK-ARM中所有带LCD的文件和文件夹。
4.打开MX文件。根据题目要求和原理图,配置引脚。
5.选择MDK-ARM为v5,选择生成源文件头文件。
6.生成文件后,打开文件,配置魔术棒(微库、debug)
7.加入LCD的源文件(如果有I2C也要加)。
8.解决LCD和LED冲突问题并测试。(在三个Write函数前面加入u16 pout = GPIOC->ODR,在后面加入GPIOC->ODR = pout)
9.编译并编程。
三、LED
1.初始化
PD2选择GPIO输出。
2.编程
实现:输入八位数,点亮对应的灯。
void LED_Control(u8 led_ctrl) { HAL_GPIO_WritePin(GPIOC,0xFF00,GPIO_PIN_SET) HAL_GPIO_WritePin(GPIOD,GPIO_PIN_2,GPIO_PIN_SET); HAL_GPIO_WritePin(GPIOD,GPIO_PIN_2,GPIO_PIN_RESET); HAL_GPIO_WritePin(GPIOC,led_ctrl