ARM④——裸机编程

一、裸机编程步骤

1、大概流程

  1. 明确需求——确定要控制哪些设备,了解设备工作原理
  2. 查看原理图——查看CPU通过哪些引脚控制设备
  3. 看芯片手册——CPU如何控制引脚
  4. 编程实现
  5. 编译、烧录
  6. 调试、运行

2、初次运行点灯

  1. 明确需求

    确定要控制的设备:LED2

    了解设备工作原理:一端接高电平,另一端接地时LED灯发光

  2. 查看原理图

    a、核心板原理图:FS4412_CoreBoard_V2

    ​ CHG_COK--> XEINT23/KP_ROW7/ALV_DBG19/GPX2_7(这里用GPX2_7,其他为复用功能)

    b、外设板原理图:FS4412-DevBoard-V5

    ​ 查找:LED-->LED2-->CHG_COK(引脚输出1--亮,0--灭)

  3. 查看芯片手册

    查看我们要使用的引脚如何进行操作。

alt

alt

这里GPX2分组的引脚由4个寄存器进行管理

寄存器 地址 bit 值-功能
GPX2CON 0x11000c40 [31,28] 0x0 = 输入
0x1 = 输出
GPX2DAT 0x11000c44 [7,0] 0 低电平 , 1 高电平
  1. 编程

    .text
    	@GPX2_7设置为输出模式
    	ldr r0 , =0x11000c40
    	ldr r1 , [r0]
    	bic r1 , #0xf0000000	@将高4位清零
    	orr r1 , #0x10000000	@将高4位的值置1
        str r1 , [r0]			@将修改后的值写回到寄存器内
    	@GPX2_7设置输出高电平
    	ldr r2 , #0x11000c44
    	ldr r3 , [r2]
    	orr r3 , #0x00000080	@将第7位置1 输出高电平
    	str r3 , [r2]			@写回寄存器
    .end
    
  2. 烧写

    使用三方软件(超级终端)串口通信

    loadb 40008000
    

alt

  1. 运行

    在超级终端内传输完成后,输入go 4000800 ,到0x40008000这个地址执行代码