1
完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
过程
搭建环境 .global _start /* 全局符号 */ /* * 设置C运行环境 */ _start: /* 进入 SVC 模式 */ mrs r0, cpsr bic r0, r0, #0x1f /* 将 r0 低5位清零,也就是cpsr的M0~M4 */ orr r0, r0, #0x13 /* r0或上 0x13,表示使用SVC模式*/ msr cpsr, r0 /* 将r0的数据写入到cpsr_c中 */ ldr sp, =0x80200000 /* 设置栈指针 */ b main /* 跳转到main函数 */ 设置常用变量 #ifdef _MU6_H #define _MU6_H /* * 一些变量的定义 */ #define _I volatile #define _O volatile #define _IO volatile #define ON 1 #define OFF 0 typedef signed char int8_t; typedef signed short char int16_t; typedef signed int int32_t; typedef unsigned char uint8_t; typedef unsigned short int uint16_t; typedef unsigned int uint32_t; typedef unsigned long long uint64_t; typedef signed char s8; typedef signed short char s16; typedef signed int s32; typedef signed long long int s64; typedef unsigned char u8; typedef unsigned short int u16; typedef unsigned int u32; typedef unsigned long long int u64; #endif // DEBUG 编写主代码 #include "fsl_common.h" #include "fsl_iomuxc.h" #include "MCIMX6Y2.h" /* * 使能所有外设时钟 */ void clk_enable(void) { CCM->CCGR0 = 0XFFFFFFFFF; CCM->CCGR1 = 0XFFFFFFFFF; CCM->CCGR2 = 0XFFFFFFFFF; CCM->CCGR3 = 0XFFFFFFFFF; CCM->CCGR4 = 0XFFFFFFFFF; CCM->CCGR5 = 0XFFFFFFFFF; CCM->CCGR6 = 0XFFFFFFFFF; } /* * 初始化LED对应的GPIO */ void led_init(void) { // 初始化IO IOMUXC_SetPinMux(IOMUXC_GPIO1_IO03_GPIO1_IO03,0); // 设置属性 IOMUXC_SetPinConfig(OMUXC_GPIO1_IO03_GPIO1_IO03,0x10B0); // 设置方式 GPIO1->GDIR |= (1 << 3); // 输出低电平 GPIO1->DR &= ~(1 <<3); } /* * 打开LED灯 */ void led_on(void) { GPIO1_DR &= ~(1<<3); } /* * 关闭LED灯 */ void led_off(void) { GPIO1_DR |= (1<<3); } /* * 延时函数 */ void delay_short(volatile unsigned int times) { while (times--) { /* code */ } } /* * 延时函数,主频下延时时间大约1ms */ void delay(volatile unsigned int n) { while (n--) { delay_short(0x7ff); } } int main(void) { clk_enable(); // 使能所有时钟 led_init(); // 初始化led while (1) { led_off(); delay(500); led_on(); delay(500); } return 0; } 编译 CROSS_COMPILE ?= arm-linux-gnueabihf- NAME ?= ledc CC := $(CROSS_COMPILE)gcc LD := $(CROSS_COMPILE)ld OBJCOPY := $(CROSS_COMPILE)objcopy OBJDUMP := $(CROSS_COMPILE)objdump OBJS := start.o main.o $(NAME).bin:$(OBJS) $(LD) -Timx6ul.lds -o $(NAME).elf $^ $(OBJCOPY) -O binary -S $(NAME).elf $@ $(OBJDUMP) -D -m arm $(NAME).elf > $(NAME).dis %.o:%.s $(CC) -Wall -nostdlib -c -O2 -o $@ $< %.o:%.S $(CC) -Wall -nostdlib -c -O2 -o $@ $< %.o:%.c $(CC) -Wall -nostdlib -c -O2 -o $@ $< clean: rm -rf *.o $(NAME).bin $(NAME).elf $(NAME).dis |
|
|
|
只有小组成员才能发言,加入小组>>
3311 浏览 9 评论
2994 浏览 16 评论
3493 浏览 1 评论
9058 浏览 16 评论
4087 浏览 18 评论
1177浏览 3评论
604浏览 2评论
const uint16_t Tab[10]={0}; const uint16_t *p; p = Tab;//报错是怎么回事?
598浏览 2评论
用NUC131单片机UART3作为打印口,但printf没有输出东西是什么原因?
2334浏览 2评论
NUC980DK61YC启动随机性出现Err-DDR是为什么?
1895浏览 2评论
小黑屋| 手机版| Archiver| 德赢Vwin官网 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-22 23:29 , Processed in 1.125244 second(s), Total 77, Slave 58 queries .
Powered by 德赢Vwin官网 网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
德赢Vwin官网 观察
版权所有 © 湖南华秋数字科技有限公司
德赢Vwin官网 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号