[001-Cortex_M3-GCC汇编] 第一个点灯程序

背景

使用Cortex-M3已经有一段时间了,大大小小也做过几个项目,可以说对这个系列的片子是有一定的了解。相对于以前的8位单片机来说,其存储空间,外设种类都有较大的提升,这对于产品的应用显得非常便利。最近,因为项目上的原因做了一些汇编工作,个人觉得如果想把Cortex-M3系列的芯片用好,汇编方面的理论知识还是需要学习和补充的,因此就有了写这一系列文档的动力,权当总结一下汇编的基础知识和实用样例。
本文重点不在于学习每一条汇编指令,而是通过使用汇编语言编写一个个简单实例使我们能对GCC汇编有一个基本的了解。

编译环境

主机环境: Ubuntu 16.04.1
目标板名称: TI DB-LM3S9B96
主芯片型号: TI LM3S9B96
交叉编译链: gcc-arm-none-eabi-5_4-2016q3
在另一篇文章 http://blog.csdn.net/pengfei240/article/details/52912833 中,已经详细描述了如何下载和制作交叉编译链,大家如果感兴趣可以参考下这篇文章。

工程目录

工程的结构按下面的目录形式进行组织:

  • 根目录以 asm 开始
  • source 为源码目录,该目录下每个例程为一个文件夹,分别以example1,example2…的形式进行组织
  • toolchain 为各个版本的交叉编译链存放的位置,其中软链接CrossCompile指向当前使用的交叉编译链
$ tree -L 2 asm
asm
├── source
│   └── example1
└── toolchain
    ├── CrossCompile -> gcc-arm-none-eabi-5_4-2016q3
    └── gcc-arm-none-eabi-5_4-2016q3

第一个点灯程序

硬件原理图

点灯程序原理图

由原理图可知,点灯方式为PF3端口设置为高电平。

源码

/*
*   example1
*
*   Description: It controls the port to turn on the LED.
*   Author: Peter Peng
*   Ver: 0.1
*/

    .equ STACK_BASE,            0x20000000
    .equ STACK_TOP,             0x400

    .equ SYSCTL_RCGC1_R,        0x400FE104
    .equ SYSCTL_RCGC2_R,        0x400FE108
    .equ GPIO_PORTF_AFSEL_R,    0x40025420
    .equ GPIO_PORTF_DIR_R,      0x40025400
    .equ GPIO_PORTF_DEN_R,      0x4002551C
    .equ GPIO_PORTF_DATA_R,     0x400253FC

    .equ SYSCTL_RCGC2_GPIOF,    0x00000020

    .text

    .thumb

    .syntax unified

    .global _start

_start:
    .word STACK_BASE + STACK_TOP      
  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值