当前位置: 首页 > news >正文

自学嵌入式day49,arm led、蜂鸣器和bsp

根据您提供的嵌入式开发流程,以下是结构化整理后的内容:

1. SDK文件管理

  • 存放路径IMAX6ULL/SDK/
  • 使用方式
    • SDK仅需头文件(无需完整IDE)
    • 完整开发工具需额外设备(下载器/仿真器)

2. 新建工程步骤

  1. 创建目录:led_sdk
  2. 拷贝基础文件:
    cp led_c/start.S led_sdk/ cp led_c/main.c led_sdk/ cp led_c/Makefile led_sdk/
  3. 添加SDK头文件:
    cp SDK/*.h led_sdk/

3. 基于SDK的LED驱动实现

关键头文件:GPIO_Type.h(定义GPIO寄存器结构)
// 时钟初始化 void clock_init(void) { CCM->CCGR0 = 0xFFFFFFFF; /* 其余CCGRx寄存器同理 */ } // LED初始化 void led_init(void) { IOMUXC_SetPinMux(IOMUXC_GPIO1_IO03_GPIO1_IO03, 0); IOMUXC_SetPinConfig(IOMUXC_GPIO1_IO03_GPIO1_IO03, 0x10B0); GPIO1->GDIR |= (1 << 3); // 设置GPIO1_IO03为输出模式 } // LED控制函数 void led_ctrl(uint8_t state) { state ? (GPIO1->DR &= ~(1 << 3)) : (GPIO1->DR |= (1 << 3)); }

4. 模块化设计

  • LED模块
    // led.h void led_init(void); void led_on(void); void led_off(void);

5. 蜂鸣器驱动实现

// beep.c void beep_init(void) { // 配置GPIO为输出模式(以GPIO1_IO04为例) IOMUXC_SetPinMux(IOMUXC_GPIO1_IO04_GPIO1_IO04, 0); GPIO1->GDIR |= (1 << 4); } void beep_switch(bool enable) { enable ? (GPIO1->DR &= ~(1 << 4)) : (GPIO1->DR |= (1 << 4)); }

6. BSP工程目录结构

project/ ├── main.c ├── start.S imx6ull/ ├── cc.h ├── fsl_iomuxc.h // IOMUX控制器头文件 ├── MCIMX6Y2.h // 芯片寄存器定义 bsp/ ├── led/ │ ├── led.c │ └── led.h ├── beep/ │ ├── beep.c │ └── beep.h Makefile

7. 链接脚本优化

/* imx6ull.lds */ SECTIONS { . = 0x87800000; .text : { obj/start.o *(.text) } .rodata ALIGN(4) : { *(.rodata*) } .data ALIGN(4) : { *(.data) } . = ALIGN(4); __bss_start = .; .bss : { *(.bss) *(.COMMON) } __bss_end = .; }

8. Makefile递归编译示例

CROSS_COMPILE = arm-linux-gnueabihf- CC = $(CROSS_COMPILE)gcc SUBDIRS = project imx6ull bsp/led bsp/beep all: $(SUBDIRS) $(CC) -T imx6ull.lds -o led_sdk.elf $^ $(SUBDIRS): $(MAKE) -C $@

关键说明

  1. 启动代码需在start.S中清除.bss段:
    ldr r0, =__bss_start ldr r1, =__bss_end mov r2, #0 clear_bss: cmp r0, r1 strlo r2, [r0], #4 blo clear_bss
  2. 寄存器操作使用fsl_iomuxc.h中的宏定义确保可移植性
http://www.jsqmd.com/news/276026/

相关文章:

  • YOLOv9 detect结果可视化:图像标注输出查看方法
  • MGeo部署全流程图解:适合生产环境的地址对齐系统搭建教程
  • PyTorch镜像支持A800吗?CUDA 11.8适配部署实战
  • APP广告变现数据分析:关键指标与优化策略
  • 亲测Qwen3-Embedding-0.6B:跨境电商多语言检索效果惊艳
  • 电商商品图批量去背实战,科哥镜像高效解决方案
  • 马年送礼佳品口碑排行榜,这些口碑好的你都知道吗?
  • 共聚焦显微镜、光学显微镜与测量显微镜的区分
  • GLM-TTS vs 商用模型:谁的语音更自然?
  • Z-Image-Turbo部署避坑:系统盘重置会丢失权重
  • 大模型评测不再难!ms-swift集成EvalScope自动打分系统
  • 从 “可选项” 到 “生命线”:信创背景下不可变备份实施全攻略
  • ms-swift实战应用:打造专属AI助手只需一个脚本
  • 马年送礼佳品口碑排行,有实力的都在这儿了!
  • 计算机毕业设计springboot大学生宿舍管理系统 基于SpringBoot的高校学生公寓智慧运营平台 SpringBoot+Vue校园寝室事务协同管理系统
  • 计算机毕业设计springboot大学生体质测试管理系统 基于SpringBoot的高校学生体测数据智慧管理平台 SpringBoot+Vue校园体育健康测评与干预系统
  • MGeo模型推理过程断点续跑:异常恢复机制设计与实现
  • Paraformer-large多通道音频处理:立体声分离与识别实战
  • AI抠图真香!cv_unet镜像3秒出结果实测
  • 计算机毕业设计springboot大学生实习实训管理系统 基于SpringBoot的校内实践教学全过程管理平台 SpringBoot+Vue高校学生实习与技能训练协同系统
  • YOLO11省钱部署指南:按需计费GPU降低训练成本
  • Splashtop 合规体系全景解读:ISO/IEC 27001、SOC 2、GDPR 和 CCPA 等
  • Live Avatar数字人模型实战指南:4×24GB与5×80GB GPU性能对比
  • FSMN VAD客服中心集成:通话片段自动分割提效方案
  • 做了十年DBA,我为什么对“AI优化SQL”从警惕变为认同?
  • 语音情感识别技术演进:Emotion2Vec系列模型发展全景解析
  • 为生产而生的 AI Workflow:AIWorks 工作流引擎的工程化设计与实现
  • 提示工程架构师与创新实验室的深度互动
  • Fun-ASR实战体验:会议录音秒变文字记录
  • 计算机毕业设计springboot大学生竞赛组队系统 基于SpringBoot的高校学科竞赛团队智能撮合平台 校园赛事搭子系统:大学生竞赛组队与评审一体化解决方案