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

Linux之ARM(MX6U)裸机篇----7.蜂鸣器实验

一,蜂鸣器模块

封装步骤:
①初始化SNVS_TAMPER这IO复用为GPIO

②设置SNVS_TAMPPER这个IO的电气属性

③初始化GPIO

④控制GPIO输出高低电平

bsp_beep.c:
#include "bsp_beep.h"
#include "cc.h"/* BEEP初始化 */
void beep_init(void)
{IOMUXC_SetPinMux(IOMUXC_SNVS_SNVS_TAMPER1_GPIO5_IO01,0);/* 复用为GPIO01-03 */IOMUXC_SetPinConfig(IOMUXC_SNVS_SNVS_TAMPER1_GPIO5_IO01,0x10b0);/* GPIO初始化 */GPIO5->GDIR |= (1<<1);GPIO5->DR &= (1<<1);
}/* 蜂鸣器控制函数 */
void beep_switch(int status)
{if(status == ON)GPIO5->DR |= (1<<1);else if(status ==OFF)GPIO5->DR &= (1<<1);
}bsp_beep.h:
#ifndef __BSP_BEEP_H
#define __BSP_BEEP_H
#include "fsl_common.h"
#include "fsl_iomuxc.h"
#include "MCIMX6Y2.h"void beep_init(void);
void beep_switch(int status);#endif 

二,main文件

main.c:
#include "main.h"
#include "bsp_delay.h"
#include "bsp_led.h"
#include "bsp_clk.h"
#include "bsp_beep.h"/** @description	: mian函数* @param 		: 无* @return 		: 无*/
int main(void)
{clk_enable();		/* 使能所有的时钟 */led_init();			/* 初始化led */while(1)			/* 死循环 */{	led_off();		/* 关闭LED */beep_switch(ON);delay(500);		/* 延时500ms */led_on();		/* 打开LED  */beep_switch(OFF);delay(500);		/* 延时500ms */}return 0;
}main.h:
#ifndef __MAIN_H
#define __MAIN_H#include "fsl_common.h"
#include "fsl_iomuxc.h"
#include "MCIMX6Y2.h"
#include "cc.h"#endif

三,makefile文件

CROSS_COMPILE 	?= arm-linux-gnueabihf-
TARGET		  	?= beepCC 				:= $(CROSS_COMPILE)gcc
LD				:= $(CROSS_COMPILE)ld
OBJCOPY 		:= $(CROSS_COMPILE)objcopy
OBJDUMP 		:= $(CROSS_COMPILE)objdump#\表示此行没写完,下一行也是
INCDIRS 		:= imx6u \bsp/clk \bsp/led \bsp/delay \bsp/beep    #添加了这一步SRCDIRS			:= project \bsp/clk \bsp/led \bsp/delay \bsp/beep    #添加了这一步INCLUDE			:= $(patsubst %, -I %, $(INCDIRS))SFILES			:= $(foreach dir, $(SRCDIRS), $(wildcard $(dir)/*.S))
CFILES			:= $(foreach dir, $(SRCDIRS), $(wildcard $(dir)/*.c))SFILENDIR		:= $(notdir  $(SFILES))
CFILENDIR		:= $(notdir  $(CFILES))SOBJS			:= $(patsubst %, obj/%, $(SFILENDIR:.S=.o))
COBJS			:= $(patsubst %, obj/%, $(CFILENDIR:.c=.o))
OBJS			:= $(SOBJS) $(COBJS)VPATH			:= $(SRCDIRS).PHONY: clean$(TARGET).bin : $(OBJS)$(LD) -Timx6u.lds -o $(TARGET).elf $^$(OBJCOPY) -O binary -S $(TARGET).elf $@$(OBJDUMP) -D -m arm $(TARGET).elf > $(TARGET).dis$(SOBJS) : obj/%.o : %.S$(CC) -Wall -nostdlib -c -O2  $(INCLUDE) -o $@ $<$(COBJS) : obj/%.o : %.c$(CC) -Wall -nostdlib -c -O2  $(INCLUDE) -o $@ $<clean:rm -rf $(TARGET).elf $(TARGET).dis $(TARGET).bin $(COBJS) $(SOBJS)print:@echo INCLUDE = $(INCLUDE)@echo SFILES = $(SFILES)@echo CFILES = $(CFILES)@echo SFILENDIR = $(SFILENDIR)@echo CFILENDIR = $(CFILENDIR)@echo SOBJS = $(SOBJS)@echo COBJS = $(COBJS)@echo OBJS = $(OBJS)

http://www.lryc.cn/news/512420.html

相关文章:

  • Zabbix 监控平台 添加监控目标主机
  • SpringCloud整合skywalking实现链路追踪和日志采集
  • html文件通过script标签引入外部js文件,但没正确加载的原因
  • OpenHarmony开发板环境搭建
  • 【Rust自学】7.6. 将模块拆分为不同文件
  • Python入门:8.Python中的函数
  • MySQL什么情况下会加间隙锁?
  • 【服务器开发及部署】code-server 显示git graph
  • Linux 终端查看 nvidia 显卡型号
  • 助你通过AI培训师中级考试的目录索引
  • 百度PaddleSpeech识别大音频文件报错
  • Lucene 漏洞历险记:修复损坏的索引异常
  • RabbitMQ基础篇之快速入门
  • 如何自定义 Kubernetes KubeSphere 默认 Logo:详细实现方案
  • 标准库以及HAL库——按键控制LED灯代码
  • Echarts+vue电商平台数据可视化——webSocket改造项目
  • Flink中并行度和slot的关系——任务和任务槽
  • 基于西湖大学强化学习课程的笔记
  • 瀚高数据库 问题: ERROR: operator does not exist: character varying = integer
  • 冷链温度记录仪蓝牙应用案例
  • LeetCode - Google 校招100题 第7天 序列(数据结构贪心) (15题)
  • 深入理解Redis:从理论到实践的Java之旅
  • LabVIEW故障诊断中的无故障数据怎么办
  • 基于DIODES AP43781+PI3USB31531+PI3DPX1207C的USB-C PD Video 之全功能显示器连接端口方案
  • MySQL配置my.ini文件
  • JVM常见排查问题的命令及可视化工具
  • 【python】matplotlib(moon cake)
  • Pytorch使用手册-空间变换网络指南(专题十五)
  • Vue 中el-table-column 进行循环,页面没渲染成功
  • 基于单片机的温湿度采集系统(论文+源码)