下面新建bsp用来存放驱动文件;
imx6ul用来存放跟芯片有关的文件,比如NXP官方的SDK库文件;
obj用来存放编译生成的.o文;
【资料图】
project存放start.S和main.c.
将前面我们使用的cc.h、fsl_common.h、fsl_iomuxc.h 和 MCIMX6Y2.h这4个文件复制到文件夹imx6ul中;
在bsp目录下新建clk、delay、led分别存放时钟驱动、延时驱动、LED驱动
编写imx6ul.h文件:
#ifndef __IMX6UL_H#define __IMX6UL_H/***************************************************************Copyright © lugl Co., Ltd. 1998-2023. All rights reserved.文件名: imx6ul.h作者 : 刘建华版本 : V1.0描述 : 包含一些常用的头文件。其他 : 此文件,学习正点原子左忠凯老师例程编写论坛:日志 : 初版V1.0 2023/5/3 刘建华创建***************************************************************/#include "cc.h"#include "MCIMX6Y2.h"#include "fsl_common.h"#include "fsl_iomuxc.h"#endif
这样以后,其他的文件中任间引用imx6ul.h就可以了。
新建bsp_led.c、bsp_led.h两个文件,将这两个文件存放在bsp/led目录下面。
bsp_led.h内容如下
#ifndef __BSP_LED_H#define __BSP_LED_H/***************************************************************Copyright © lugl Co., Ltd. 1998-2023. All rights reserved.文件名: bsp_led.h作者 : 刘建华版本 : V1.0描述 : LED驱动头文件。其他 : 此文件,学习正点原子左忠凯老师例程编写论坛 :日志 : 初版V1.0 2023/5/3 刘建华创建************************************************************/#define LED0 0/*** 函数声明 *******/void led_init(void);void led_switch(int led, int status);#endif
bsp_led.c内容如下:
#include "bsp_led.h"/***************************************************************Copyright © lugl Co., Ltd. 1998-2023. All rights reserved.文件名: bsp_led.c作者 : 刘建华版本 : V1.0描述 : LED驱动文件。其他 : 此文件,学习正点原子左忠凯老师例程编写论坛 :日志 : 初版V1.0 2023/5/3 刘建华创建************************************************************//*********** @description :初始化LED对应的GPIO* @param[in] :无* @return :无* */void led_init(void){IOMUXC_SetPinMux(IOMUXC_GPIO1_IO03_GPIO1_IO03,0);/* 复用为GPIO1_IO03 */IOMUXC_SetPinConfig(IOMUXC_GPIO1_IO03_GPIO1_IO03,0X10B0);GPIO1->GDIR |= (1 << 3); /* 初始化GPIO,GPIO1_IO03设置为输出*/GPIO1->DR &= ~(1 << 3); /* 设置GPIO1_IO03输出低电平,打开LED0*/}/** @description: LED控制函数,控制LED打开还是关闭* @param - led: 要控制的LED灯编号* @param - status: 0,关闭LED0,1 打开LED0* @return : 无 */void led_switch(int led, int status){switch (led){case LED0:if(status == ON)GPIO1->DR &= ~(1<<3); /* 打开LED0 */else if(status == OFF)GPIO01->DR |= (1<<3); /* 关闭LED0 */ break; default: break; } }
新建bsp_clk.h、bsp_clk.c两个文件,将这两个文件放到bsp/clk文件夹中。两个文件分别如下:
bsp_clk.h:
#ifndef __BSP_CLK_H#define __BSP_CLK_H/***************************************************************Copyright © lugl Co., Ltd. 1998-2023. All rights reserved.文件名: bsp_clk.h作者 : 刘建华版本 : V1.0描述 : 系统时钟驱动头文件。其他 : 此文件,学习正点原子左忠凯老师例程编写论坛 :日志 : 初版V1.0 2023/5/3 刘建华创建************************************************************/#include "imx6ul.h"void clk_init(void);#endif
bsp_clk.c
/***************************************************************Copyright © lugl Co., Ltd. 1998-2023. All rights reserved.文件名: bsp_clk.c作者 : 刘建华版本 : V1.0描述 : 系统时钟 驱动文件。其他 : 此文件,学习正点原子左忠凯老师例程编写论坛 :日志 : 初版V1.0 2023/5/3 刘建华创建************************************************************/#include "bsp_clk.h"/**** @description :初始化I.MAX6U所有外设时钟* @param[in] :无* @return :无* */void clk_enable(void){CCM->CCGR0 = 0XFFFFFFFF;CCM->CCGR1 = 0XFFFFFFFF;CCM->CCGR2 = 0XFFFFFFFF;CCM->CCGR3 = 0XFFFFFFFF;CCM->CCGR4 = 0XFFFFFFFF;CCM->CCGR5 = 0XFFFFFFFF;CCM->CCGR6 = 0XFFFFFFFF;}
修改main.c文件如下
/***************************************************************Copyright © lugl.文件名 : main.c作者 : 刘建华版本 : V1.0描述 :其他 : 此程序学习左中凯老师课程日志 : 初版 2023/5/3刘建华修改**************************************************************/#include "bsp_clk.h"#include "bsp_led.h"#include "bsp_delay.h"/************************************************************* @descriptions: main函数* @param : 无* @return : 无 *************************************************************/ int main(void) { clk_enable(); led_init(); while (1) { led_switch(LED0,ON); delay(500); led_switch(LED0,OFF); delay(500); } return 0; }
CROSS_COMPILE ?= arm-linux-gnueabihf-TARGET ?= bspCC := $(CROSS_COMPILE)gccLD:= $(CROSS_COMPILE)ldOBJCOPY := $(CROSS_COMPILE)objcopyOBJDUMP := $(CROSS_COMPILE)objdumpINCDIRS:= imx6ul bsp/clk bsp/led bsp/delaySRCDIRS:= project bsp/clk bsp/led bsp/delayINCLUDE:= $(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) -Timx6ul.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 $@ $rf$(TARGET).elf $(TARGET).dis $(TARGET).bin $(COBJS) $(SOBJS)
imx6ul.lds:
SECTIONS{. = 0X87800000;.text :{obj/start.o*(.text)}.rodata ALIGN(4) : {*(.rodata*)}.data ALIGN(4) : { *(.data) }__bss_start = .;.bss ALIGN(4) : { *(.bss) *(COMMON) }__bss_end = .;}
至此,程序重构完成,我们把文件拷到虚拟机进行编译,并烧写到SD卡:
烧到开发板后,LED0灯成功闪亮。
本篇学习了bsp工程的创建管理,工程目录结构为bsp、imx6ul、obj、project来分片管理,bsp中又分为bsp_clk、bsp_led、bsp_delay来分片管理。最后学习了Makefile的创建,为以后工程使用提供基础的结构。
上一篇:环球今头条!昭通天气预报~
下一篇:最后一页
学习正点原子的裸机BSP工程管理、makefile的创建等
1、疾病分析:糖皮质激素由肾上腺皮质分泌,对机体的生长、发育、代谢和自身免疫起着重要的调节作用。2、糖
愉快的五一假期结束了,迎接大家的,是5月4日的早高峰!重庆交巡警预测,4日早高峰持续时间可能会比普通周
天气预报 预计:4日全市多云到晴;5到6日昭阳、鲁甸、巧家晴间多云,其余县(市)多云有分散性阵雨。
近日有一则网络视频火爆全网,从视频画面当中能够看到有一名老人落水之后,小伙子为了将老人救起在水里面整
近日,由西安客运段动车二队宝安11组担当的深圳北至西安北的G3156次列车停靠在安庆站。车站值班员找到列车
美国驻华大使伯恩斯(NicholasBurns)透过视频,出席华盛顿一个智库的活动并发表讲话,他说美国从未打算“
走街串巷“小店游”破土而出在上海,一个个隐藏在街巷里的特色小店也吸引了很多人
全新好5月3日公告,公司股票已连续2个交易日(2023年4月27日、28日)收盘价格跌幅偏离值累计超过20 55%,公
根据两省政府门户网政务服务旗舰店的各部门政务服务事项编制“跨省通办”清单,原则上除了公安、应急管...
1、玩家想要升级翅膀需要两样东西,其中之一就是圣羽。翅膀升级到3以后,每次升级都需要使用圣羽。2、如果
1、《挖荠菜》是当代女作家张洁创作的一篇散文,最初发表于1978年5月10日,此后长期被中国初中语文教材选用
五一假期,江西省鹰潭市策划文化和旅游活动100余场,发放电子商贸文旅消费券1000万元,推出多项惠民措施,
据中国驻以色列大使馆官网消息,当地时间5月2日下午,以色列南部地区遭受火箭弹袭击,造成多人受伤。受伤人
1、最近的肯定是天津啦!不过天津是人造沙滩。2、只能去南戴河北戴河东戴河啦!。以上就是【离北京最近的沙
欢迎观看本篇文章,小勉来为大家解答以上问题。西安218路公交车路线,运行时间很多人还不知道,现在让我们
格隆汇5月3日丨哈三联公布,近日,公司与中国药科大学签署《PPAR激动剂创新药项目专利、专利申请权及技术成
今天是“五一”假期最后一天各地陆续迎来返程高峰请大家错峰错时出行一起来看最新交通信息↓↓↓公路据...
直播吧5月3日讯法媒报道,梅西沙特行未获批准,俱乐部已对其进行停赛停训停薪,处罚已通知球员。阿根廷媒体
5月2日晚,2023年全国游泳冠军赛第二个比赛日,在男子100米蛙泳决赛中,上海运动员覃海洋游出57秒93,打破
X 关闭
X 关闭
05-03 21:00:56
05-03 20:15:33
05-03 19:03:48
05-03 18:19:08
05-03 17:24:29