此笔记由个人整理
塞上苍鹰_fly
课程来自:正点原子_手把手教你学Linux
一、硬件原理图分析
- 底板蜂鸣器原理图
- beep引脚输出低电平时蜂鸣器响
- beep引脚输出高电平时蜂鸣器不响
- 蜂鸣器与芯片连接
- 与芯片的连接对应引脚
- 蜂鸣器对应的引脚为:SNVS_TAMPER1复用为GPIO05_IO01
二、实验程序编写
- 创建bsp文件下的beep蜂鸣器驱动
- 修改beep.h函数
#ifndef __BEEP_H
#define __BEEP_H
#include "fsl_common.h"
#include "fsl_iomuxc.h"
#include "MCIMX6Y2.h"
#include "cc.h"
/*函数声明*/
void beep_init(void); /* BEEP初始化*/
void beep_switch(int status); /* BEEP控制函数*/
#endif // !__BEEP_H
- 修改beep.c函数
#include "bsp_beep.h"
/*BEEP初始化*/
void beep_init(void)
{
/*复用为GPIO5_IO01*/
IOMUXC_SetPinMux(IOMUXC_SNVS_SNVS_TAMPER1_GPIO5_IO01,0);
/*设置电气属性*/
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);
}
- 改写main.c函数
#include "bsp_led.h"
#include "bsp_clk.h"
#include "bsp_beep.h"
#include "bsp_delay.h"
#include "main.h"
/*主函数*/
int main(void)
{
/*使能外设时钟*/
clk_enable();
/*初始化led*/
led_init();
/*初始化beep*/
beep_init();
/*设置led闪烁*/
while(1)
{
/*led打开的同时启动蜂鸣器*/
led_switch(LED0,ON);
beep_switch(ON);
delay(500);
/*led关闭的同时启动蜂鸣器*/
led_switch(LED0,OFF);
beep_switch(OFF);
delay(500);
}
return 0;
}
-
改写makefile
-
2行修改工程名
-
12行处添加头文件路径
-
18行处添加源文件路径
-
CROSS_COMPILE ?= arm-linux-gnueabihf-
TARGET ?= beep
CC := $(CROSS_COMPILE)gcc
LD := $(CROSS_COMPILE)ld
OBJCOPY := $(CROSS_COMPILE)objcopy
OBJDUMP := $(CROSS_COMPILE)objdump
INCUDIRS := imx6ul \
bsp/clk \
bsp/led \
bsp/beep\
bsp/delay
SRCDIRS := project \
bsp/clk \
bsp/led \
bsp/beep\
bsp/delay
INCLUDE := $(patsubst %, -I %, $(INCUDIRS))
SFLES := $(foreach dir, $(SRCDIRS), $(wildcard $(dir)/*.s))
CFLES := $(foreach dir, $(SRCDIRS), $(wildcard $(dir)/*.c))
SFLENDIR := $(notdir $(SFLES))
CFLENDIR := $(notdir $(CFLES))
SOBJS := $(patsubst %, obj/%, $(SFLENDIR:.s=.o))
COBJS := $(patsubst %, obj/%, $(CFLENDIR:.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).bin $(TARGET).dis $(TARGET).elf $(OBJS)
三、编译验证
- 编译链接
- 插入SD卡进行下载
-
将SD卡插入开发板,LED灯亮的时候蜂鸣器响,LED灯灭的时候蜂鸣器不响
-
最终文件夹