最简例子  以流行的FS4412单片机为例,实现LED灯控制。

准备:

  1. 开发设备原理图
  2. 芯片手册
  3. PDF阅读器(带关键词查找功能)
  4. 开发工具链


1. 看电路图
    a. 找到我要控制的设备
    b. 找到设备在CPU侧的控制管脚(如GPX2_7)


2. 看芯片手册 (先看相关的中文文档,熟悉设备,再看手册)
    a. 搜索电路图里对应控制管脚的名称(如GPX2)
    b. 看目录找到对应的控制模块(如:6 General Purpose Input/Output (GPIO) Control)
    c. 看该模块的overview 了解该模块的大概功能
    d. 看控制寄存器(REGISTER DESCRIPTION)  重点,难点 

PS:如果寄存器比较多什么办?
       看技术支持提供的例子程序, 找到需要修改的寄存器(常常只有几个)。
        部分厂商会提供配置软件,通过界面去配置功能, 我们只需使用配置好的寄存器值就可以了

3. 编程
       a. 定义要控制的寄存器的宏 (与手册里的寄存器地址对应起来)
       b. 设备初始化  (如设置GPIO为输出状态)
       c. 把功能分成最基本的小块,逐个实现 如点亮灯-> 在灭灯-> 加延时->闪烁-> 跑马灯

 


汇编程序(参考例子)


   .text
     @ 设置LED灯的配置寄存器 GPX2CON7 为输出状态
	 ldr  r0,=0x11000c40    @获得寄存器地址
	 ldr  r1,[r0]    
	 bic  r1,#0xf0000000       @只用寄存器高4位,所以清除这4位
	 orr  r1,#0x10000000        @给寄存器设定值 --灯亮
	 str  r1,[r0]            @写寄存器


    .end