蓝桥杯嵌入式开发板代码
时间: 2025-04-20 14:29:59 浏览: 31
### 蓝桥杯嵌入式开发板示例代码与教程
#### 使用G4开发板进行ADC读取
对于参与蓝桥杯竞赛的学生来说,掌握如何利用G4开发板完成特定任务至关重要。下面提供了一个关于如何使用STM32 G4系列微控制器中的模数转换器(ADC)来获取模拟信号值的例子。
```c
#include "stm32g4xx_hal.h"
#include "adc.h"
// 初始化 ADC 模块函数声明
void MX_ADC_Init(void);
int main(void){
HAL_Init();
// 系统时钟配置省略...
// 初始化 ADC 接口
MX_ADC_Init();
while (1){
static float adcValue;
// 获取当前通道的 ADC 数字量表示形式
adcValue = GETADC_value(&hadc);
// 进一步处理得到的数据...
}
}
```
此段代码展示了初始化ADC模块以及周期性地从指定通道读取电压水平的方法[^2]。为了使这段代码正常运行,在实际项目中还需要定义`MX_ADC_Init()`方法用于设置具体的参数,并确保已经包含了正确的头文件以支持所使用的外设库。
#### GPIO 控制 LED 实践
另一个常见的练习是通过编程控制LED灯的状态变化,这有助于理解GPIO端口的操作方式:
```c
#include "stm32g4xx_hal.h"
#define LED_PIN GPIO_PIN_5
#define LED_GPIO_PORT GPIOD
static void SystemClock_Config(void);
static void MX_GPIO_Init(void);
int main(void){
HAL_Init();
SystemClock_Config();
MX_GPIO_Init();
while (1){
HAL_Delay(500); /* 延迟 */
HAL_GPIO_TogglePin(LED_GPIO_PORT, LED_PIN); /* 切换 LED 的状态 */
}
}
/* GPIO Initialization Function */
static void MX_GPIO_Init(void){
__HAL_RCC_GPIOD_CLK_ENABLE();
GPIO_InitTypeDef GPIO_InitStruct = {0};
/* Configure GPIO pin : PD5 */
GPIO_InitStruct.Pin = LED_PIN;
GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP; // 设置为推挽输出模式
GPIO_InitStruct.Pull = GPIO_NOPULL;
GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;
HAL_GPIO_Init(LED_GPIO_PORT, &GPIO_InitStruct);
}
```
上述实例说明了怎样创建一个简单的应用程序来点亮连接到PD5引脚上的LED,并让它每隔半秒闪烁一次。这里同样需要注意的是,具体实现细节可能会因不同型号而有所差异,因此建议查阅官方文档获得最准确的信息[^1]。
#### 串口通信实验
最后介绍一种非常实用的功能——UART接口下的串行通讯。它允许开发者轻松调试程序或将数据发送给其他设备:
```c
#include "stm32g4xx_hal.h"
UART_HandleTypeDef huart2;
void Error_Handler(void){ }
void SystemClock_Config(void){ }
static void MX_USART2_UART_Init(void){
huart2.Instance = USART2;
huart2.Init.BaudRate = 9600;
huart2.Init.WordLength = UART_WORDLENGTH_8B;
huart2.Init.StopBits = UART_STOPBITS_1;
huart2.Init.Parity = UART_PARITY_NONE;
huart2.Init.Mode = UART_MODE_TX_RX;
huart2.Init.HwFlowCtl = UART_HWCONTROL_NONE;
huart2.Init.OverSampling = UART_OVERSAMPLING_16;
if (HAL_UART_Init(&huart2) != HAL_OK){
Error_Handler();
}
}
int fputc(int ch, FILE *f){
HAL_UART_Transmit(&huart2, (uint8_t *)&ch, 1, HAL_MAX_DELAY);
return ch;
}
int main(void){
char message[]="Hello World!";
HAL_Init();
SystemClock_Config();
MX_USART2_UART_Init();
printf("%s",message); // 发送字符串至终端
while (1){}
}
```
该例子实现了向PC或其他接收装置传输字符序列“Hello World!”的过程。值得注意的是,这里的波特率被设定为9600bps,可以根据实际情况调整这一数值;同时也要记得安装相应的驱动以便于电脑能够识别并正确解析来自MCU的消息流。
阅读全文
相关推荐


















