登录/注册

arm嵌入式开发实例1-2

更多

ARM嵌入式开发实例1:LED闪烁(基于STM32F103C8T6)

硬件配置:

代码实现:

#include "stm32f1xx_hal.h"

int main(void) {
  // HAL库初始化
  HAL_Init();

  // 配置系统时钟(72MHz)
  SystemClock_Config();

  // 使能GPIOA时钟
  __HAL_RCC_GPIOA_CLK_ENABLE();

  // GPIO配置结构体
  GPIO_InitTypeDef GPIO_InitStruct = {0};
  GPIO_InitStruct.Pin = GPIO_PIN_8;
  GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;  // 推挽输出
  GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;
  HAL_GPIO_Init(GPIOA, &GPIO_InitStruct);

  while (1) {
    // LED亮
    HAL_GPIO_WritePin(GPIOA, GPIO_PIN_8, GPIO_PIN_RESET);
    HAL_Delay(500);  // 延时500ms

    // LED灭
    HAL_GPIO_WritePin(GPIOA, GPIO_PIN_8, GPIO_PIN_SET);
    HAL_Delay(500);
  }
}

关键点解析:

  1. __HAL_RCC_GPIOA_CLK_ENABLE():开启GPIOA时钟(STM32外设默认时钟关闭以节能)
  2. GPIO_MODE_OUTPUT_PP:推挽输出模式(可同时输出高低电平)
  3. HAL_Delay():基于SysTick定时器的毫秒级延时函数

ARM嵌入式开发实例2:按键控制LED(基于中断)

新增硬件:

代码实现:

// 全局变量存储按键状态
volatile uint8_t buttonPressed = 0;

int main(void) {
  // ...(初始化代码与实例1相同)

  // 配置PC13为输入模式(上拉)
  __HAL_RCC_GPIOC_CLK_ENABLE();
  GPIO_InitStruct.Pin = GPIO_PIN_13;
  GPIO_InitStruct.Mode = GPIO_MODE_IT_FALLING;  // 下降沿中断
  GPIO_InitStruct.Pull = GPIO_PULLUP;
  HAL_GPIO_Init(GPIOC, &GPIO_InitStruct);

  // 配置嵌套向量中断控制器
  HAL_NVIC_SetPriority(EXTI15_10_IRQn, 0, 0);
  HAL_NVIC_EnableIRQ(EXTI15_10_IRQn);

  while (1) {
    if (buttonPressed) {
      // 按键按下时切换LED状态
      HAL_GPIO_TogglePin(GPIOC, GPIO_PIN_13);
      buttonPressed = 0;
      HAL_Delay(300);  // 防抖延时
    }
  }
}

// 外部中断服务函数
void EXTI15_10_IRQHandler(void) {
  HAL_GPIO_EXTI_IRQHandler(GPIO_PIN_13);
}

// 回调函数
void HAL_GPIO_EXTI_Callback(uint16_t GPIO_Pin) {
  if (GPIO_Pin == GPIO_PIN_13) {
    buttonPressed = 1;
  }
}

关键技术:

  1. 中断配置
    • GPIO_MODE_IT_FALLING:下降沿触发中断
    • HAL_NVIC_*:嵌套向量中断控制器配置
  2. 中断处理流程
    • EXTIx_IRQHandler → HAL_GPIO_EXTI_IRQHandler → HAL_GPIO_EXTI_Callback
  3. 按键防抖
    • 在回调函数中置位标志位,在主循环中执行操作+延时

开发工具链说明:

工具 用途
STM32CubeMX 图形化配置引脚/时钟/外设
STM32CubeIDE 集成开发环境(基于Eclipse)
ST-LINK 调试器/编程器
PuTTY 串口调试工具(查看日志输出)

注:以上实例基于STM32 HAL库实现,实际开发中需根据具体硬件修改引脚定义。建议使用STM32CubeMX生成初始化代码框架,可大幅降低配置复杂度。

EK-U1-ZCU104-G:高性能嵌入式开发平台

1970-01-01 08:00:00 至 1970-01-01 08:00:00

嵌入式开发前景怎么样?

嵌入式开发前景非常广阔,这主要得益于物联网、人工智能、大数据等技术的快速发展,以及嵌入式系统在各个领域的广泛应用。以下是对嵌入式开发前景的详细分

2024-07-10 09:00:29

Linux系统的嵌入式开发是什么

嵌入式开发听起来很高大上,但其实它就在我们身边。   嵌入式开发是指将操作系统、应用程序或数据存储在嵌入式设备中,如手机、平板电脑、智能家

2023-10-12 15:40:39

嵌入式开发培训学什么?嵌入式开发板知识讲解

嵌入式开发就是指在嵌入式操作系统下进行开发,一般常用的系统有WinCE,ucos,vxworks,linux,android等。另外,用c,c+

资料下载 李娜 2021-11-02 20:21:03

嵌入式开发资料免费分享

嵌入式开发资料免费分享嵌入式工程师经验分享:如何学习嵌入式开发截取文档部分学习嵌入式

资料下载 佚名 2021-10-21 11:07:55

嵌入式开发(一):嵌入式开发新手入门

嵌入式开发环境及交叉编译环境,开发完成后,编译得到bin文件,然后在Windows下将bin文件通过串口或网络下发到嵌入式板卡,程序在

资料下载 佚名 2021-10-14 10:58:31

嵌入式开发教程之基于ARM7的LCD设计与实现

嵌入式开发教程之基于ARM7的LCD设计与实现(嵌入式开发培训班费用)-该文档为嵌入式

资料下载 佚名 2021-08-04 11:25:50

ARM嵌入式系统开发_Android应用开发入门(基础版)

ARM嵌入式系统开发_Android应用开发入门(基础版)(

资料下载 ah此生不换 2021-08-04 11:02:03

新手入门怎么选嵌入式开发板?ARM开发板推荐及学习方法

新手入门怎么选嵌入式开发板?ARM开发板推荐及学习方法

2022-05-12 16:26:26

ARM嵌入式开发中的概述

@TO加粗样式C嵌入式学习之ARM需要了解的事欢迎使用Markdown编辑器学习嵌入式,首先要了解的是

2021-12-14 08:34:07

嵌入式开发的基础知识和入门必要步骤

ARM嵌入式开发是嵌入式开发领略比较热门的技术,本文针对ARM

2021-12-14 07:32:49

该如何有效快速的学好嵌入式开发

  ARM及嵌入式开发近年越来越热,特别是android与linux在手机、平板等许多消费类电子及工业设备中越来越成熟的应用,更是让很多学生及许多原来windows的程序员纷纷转向

2021-11-04 07:46:13

嵌入式开发的产品有哪些_嵌入式开发的流程

本文主要阐述了嵌入式开发的产品,其次介绍了嵌入式开发的流程。

2020-08-31 15:38:26

嵌入式开发可以分为哪几类

嵌入式开发从大类上来说,主要分为两类:1)嵌入式硬件开发;

2020-08-24 14:29:39

21天学通ARM嵌入式开发

21天学通ARM嵌入式开发

2020-05-07 09:36:29
7天热门专题 换一换
相关标签