STM32开发板Lora物联网竞赛实战:从硬件驱动到无线通信系统搭建
在各类大学生电子设计竞赛和物联网创新项目中,基于STM32的开发平台配合Lora无线通信技术已经成为热门选择。本文将带您从最基础的LED控制开始,逐步构建一个完整的物联网环境监测系统,涵盖传感器数据采集、OLED显示、无线数据传输等核心功能模块。
1. 开发环境搭建与基础外设驱动
1.1 硬件准备与开发环境配置
新大陆STM32开发板通常搭载STM32F103系列芯片,配备丰富的外设接口。开发前需要准备:
- Keil MDK或STM32CubeIDE开发环境
- ST-Link调试器
- 配套的库函数文件(通常由厂商提供)
- 串口调试助手工具
关键初始化步骤:
void BoardInit(void)
{
BoardInitMcu(); // MCU时钟初始化
BoardInitPeriph(); // 外设GPIO初始化
SystemClock_Config(); // 系统时钟配置
MX_GPIO_Init(); // GPIO引脚初始化
}
1.2 LED控制进阶技巧
基础的点亮/熄灭LED操作之外,PWM呼吸灯效果更能体现对硬件的精细控制:
// PWM呼吸灯配置
void PWM_Config(void)
{
TIM_OC_InitTypeDef sConfigOC = {0};
htim2.Instance = TIM2;
htim2.Init.Prescaler = 71; // 1MHz计数频率
htim2.Init.CounterMode = TIM_COUNTERMODE_UP;
htim2.Init.Period = 255; // 8位分辨率
HAL_TIM_PWM_Init(&htim2);
sConfigOC.OCMode = TIM_OCMODE_PWM1;
sConfigOC.Pulse = 0; // 初始占空比
sConfigOC.OCPolarity = TIM_OCPOLARITY_HIGH;
HAL_TIM_PWM_ConfigChannel(&htim2, &sConfigOC, TIM_CHANNEL_1);
HAL_TIM_PWM_Start(&htim2, TIM_CHANNEL_1);
}
呼吸灯效果实现:
| 参数 | 说明 | 典型值 |
|---|---|---|
| levelCnt | 呼吸周期细分等级 | 64 |
| levelUpDevide | 亮度变化步长 | 128 |
| breathSpeed | 呼吸速度控制 | 1-10 |
1.3 按键输入与中断处理
可靠的按键检测需要硬件消抖和状态机处理:
// 按键状态机
typedef enum {
KEY_STATE_RELEASED,
KEY_STATE_DEBOUNCE,
KEY_STATE_PRESSED,
KEY_STATE_LONG_PRESS
} KeyState;
void Key_Scan(void)
{
static KeyState keyState = KEY_STATE_RELEASED;
static uint32_t pressTime = 0;
switch(keyState) {
case KEY_STATE_RELEASED:
if(HAL_GPIO_ReadPin(KEY_GPIO, KEY_PIN) == GPIO_PIN_RESET) {
keyState = KEY_STATE_DEBOUNCE;
pressTime = HAL_GetTick();
}
break;
case KEY_STATE_DEBOUNCE:


454

被折叠的 条评论
为什么被折叠?



