博客首页 | 排行榜 |

tianjiwubian的博客

个人档案
博文分类
"Hello, world"------用汇编点亮我的LED小灯(STM32103RB)  2010-01-11 00:08

 Hello, world! 学习STM32,从用它点亮我的LED小灯开始,可以提高自我学习兴趣,但其意义却不仅于此,更重要的意义到目前为止想到了两条:

  1. 对STM32有一个先行的框架性认识,先混个脸熟。
  2. 熟悉整个的开发流程,建立一个后续的学习平台。

尽管只想到两条,但认为已经足够充分让我做出如此选择了^v^.

只是点亮一只LED小灯,但它也足足花了我一周的时间(但还有几个问题没真正弄明白),所涉及的东西并不太少,最后总结一下,大概要知道如下的东东:

  1. STM32基础
  2. Register and Memory.
  3. 指令集
  4. 引脚端口配置
  5. 向量表及STM32启动过程。
  6. ARM汇编语言基础
  7. Keil(MDK) 的基本使用
  8. STM32时钟配置
  9. 程序下载

Oh, My God! 我只是要点亮一只LED小灯而已!没错,在这里并没有打算做更多的事情。虽然涉及很多的东西,但别忘了目的也正在于此,每个方面都会涉及一些,但在每个知识点上所要掌握的却很少很少,例如指令,这里可能只会用到几条,所以大可不必担心!一向不太强求自己去记额外的东西,在这里,没有掌握的东西只会有二类,一是用不着,二是现在还用不着。太多的东西我们只要检索就行了,如指令,看一遍然后打印出来放在手边就行了,大脑内存有限,况且现在硬盘这么便宜,网络这么发达%&%#$%@#$,在这里图的只是先混个脸熟。
大概了解一下,STM32里面有很多的东东,不可能毕其功于一役,我的计划是一年,且让我慢慢学来^v^。

点亮一只LED,也是一波好几折,从最开始引脚没有配置,再到引脚时钟没有打开,等等。最后终于看到我的小LED开始闪烁了^v^。这里将程序贴出,以期与同道中人交流学习。

( 由于上传格式限制,附件为txt档,将后缀改为.asm后加到keil工程里可直接编译通过。)

;**************************************************************************************
;Author: Kevin
;Date: 2010/01/8
;CPU: STM32103RB
;Function:  To flash the LEDs which are connected to PA0~PA7,
;   just a simple demo of how to use assembly language to program STM32 MCU.
;*************************************************************************************


STACK_TOP EQU 0X00002000 
;-----------------------------------------------
 AREA RESET,CODE,READONLY 
       
 DCD STACK_TOP    
       
 DCD POWERON                  
 
POWERON     
 LDR R0,=START
 BX  R0 
;------------------------------------------------------------------------------
 AREA BLINK_LED,CODE,READONLY  
 ENTRY
START
 ;----------------------------------------------------------------

 LDR R1,=0X40021000
 LDR R0,=0X00000003   ; RCC_CR
 STR R0,[R1,#0X00]

 LDR R0,=0X00000000
 STR R0,[R1,#0X004]  ;RCC_CFGR

 LDR R0,=0X00000014
 STR R0,[R1,#0X14]

 LDR R0,=0XFFFFFFFF
 STR R0,[R1,#0X18]
 
 ;-----------------------------------------------------------------
  ;configure the PA0~PA7 in MODE: General purpose output_push-pull.  
  MOVS R0,#0X22222222 
  LDR R1,=0X40010800  
  STR R0,[R1,#0X00]  
    ;----------------------------------------------------------------------
MAIN
  LDR R1,=0X40010800
 
  LDR R0,=0Xfffffff1
  STR R0,[R1,#0X0C]    ;write 0xffffffff to GIPOA_ODR, turn off the LEDs
  ;----------------------------
  BL DELAY      ;delay some time
  ;----------------------------
  LDR R0,=0XFFFFFFF2
  STR R0,[R1,#0X0C]    ;write 0x0000000 to GIPOA_ODR, turn on the LEDs
  ;----------------------------
  BL DELAY
  ;---------------------------- ;delay some time
  B MAIN       ;jump to MAIN
;-------------------------------------------------------------------------
DELAY
 LDR R3,=0X0002FFFF
DELAY_1
 SUBS R3,R3,#0X01 
 BEQ DELAY_OUT 
 B DELAY_1  
DELAY_OUT
 BX LR    
;------------------------------------------------- 

  END 

 

Blink LED.txt

类别:2010 |
下一篇:2010--STM32 之旅,从芯开始
以下网友评论只代表其个人观点,不代表本网站的观点或立场