stm32f103汇编-1:LED点灯

汇编点灯

1.软硬件介绍

MCU:STM32F103xxx(72 MHz)

LED:PC13 管脚

编译器:Keil自带

功能: 对PC13外接的led进行控制闪烁

2.源码内容

复制代码
;=================================================
; STM32F103 PC13 LED Blink (Pure Assembly)
;=================================================

    AREA    RESET, DATA, READONLY
    EXPORT  __Vectors
__Vectors
    DCD     StackTop       ; MSP
    DCD     Reset_Handler  ; Reset

    AREA    STACK, NOINIT, READWRITE, ALIGN=3
StackMem
    SPACE   1024
StackTop

    AREA    FLASH, CODE, READONLY
    THUMB

;------------------------------
; 寄存器地址定义
;------------------------------
RCC_APB2ENR   EQU     0x40021018
GPIOC_CRH     EQU     0x40011004
GPIOC_ODR     EQU     0x4001100C

;------------------------------
; 复位入口
;------------------------------
Reset_Handler
    ; 1) 开启 GPIOC 时钟 (APB2ENR bit 4)
    LDR     R0, =RCC_APB2ENR
    LDR     R1, [R0]  ;寄存器寻址读取寄存器里的数据到R1寄存器中
    ORR     R1, R1, #(1 << 4)  ;对R1中的值bit4进行或运算后重新赋值给R1
    STR     R1, [R0]    ;R1中的值写回R0指向的寄存器中  

    ; 2) 配置 PC13 为输出 (CRH bits 20-23)
    LDR     R0, =GPIOC_CRH
    LDR     R1, [R0]
    BIC     R1, R1, #(0xF << 20)   ; 清除 PC13
    ORR     R1, R1, #(0x3 << 20)   ; 输出 50MHz
    STR     R1, [R0]

;------------------------------
; 主循环
;------------------------------
MainLoop
    ; LED ON (PC13 = 0)
    LDR     R0, =GPIOC_ODR
    LDR     R1, [R0]
    BIC     R1, R1, #(1 << 13)  ;清除bit13的位
    STR     R1, [R0]

    BL      Delay

    ; LED OFF (PC13 = 1)
    LDR     R0, =GPIOC_ODR
    LDR     R1, [R0]
    ORR     R1, R1, #(1 << 13)  ;bit13的位置为1
    STR     R1, [R0]

    BL      Delay

    B       MainLoop

;------------------------------
; 简单延时函数
;------------------------------
Delay
    MOV     R2, #500000
DelayLoop
    SUBS    R2, R2, #1
    BNE     DelayLoop
    BX      LR

    END

3.环境部署和测试

将代码复制到keil中芯片的启动文件中;

在keil中编译生成执行文件;

连接板卡和pc;

设置keil中的对应烧录器的配置;

点击烧录并测试看现象;

相关推荐
东京老树根5 小时前
Arduino - 入门02 - Arduino编程基础 Arduino程序结构,实物与模拟器对照,Arduino常用函数
单片机·机器人
salipopl7 小时前
基于STM32平台的多旋翼无人机系统设计与实现
stm32·嵌入式硬件·无人机
iCxhust15 小时前
8086/8088单板机VSCode集成自动下载功能(完善串口接收显示版)
ide·vscode·单片机·编辑器·微机原理·8088单板机·8086单板机
振南的单片机世界16 小时前
从数码管到点阵屏:动态扫描加595,3个IO驱动256个LED
stm32·单片机·嵌入式硬件
listhi52016 小时前
STC8 16通道模拟采集 + 4路串口 + 8路PWM 程序
stm32·单片机·嵌入式硬件
星夜夏空9916 小时前
STM32单片机学习(4)——嵌入式概述
stm32·单片机·学习
Deitymoon17 小时前
STM32——OLED显示字符串
单片机·嵌入式硬件
LCG元17 小时前
STM32实战:基于STM32F407的FFT频谱分析(音频信号处理)
stm32·音视频·信号处理
Graceful_scenery18 小时前
龙芯2k0300 - 走马观碑组按键驱动移植
单片机·嵌入式硬件
d111111111d18 小时前
MQTT+STM32+ESP8266网络程序分层+韦老师
笔记·stm32·单片机·嵌入式硬件·学习·php