在线时间2 小时
UID279169
ST金币0
蝴蝶豆0
注册时间2008-4-7
新手上路
- 最后登录
- 2020-10-28
|
a0a.1 0b0c
;下面的汇编定义了SPI1
GPIOA_ EQU 0x40010800 ;端口A基址
SPI1_ EQU 0x40013000 ;SPI1控制基址
RCC_ EQU 0x40021000 ;时钟控制基址
NVIC_ EQU 0xE000E000 ;中断控制基址
;*****************程序段*************************
AREA TEST,CODE,READONLY
;SPI通讯中断-------------------------------------------------
SPI1_IRQHandler PROC
PUSH {LR}
LDR R0,=GPIOA_ ;GPIOA端口A基址
LDR R1,[R0,#0X0C] ;GPIOA_ODR端口输出数据寄存器
EOR R1,#0X00000002 A1输出脉冲信号
STR R1,[R0,#0X0C]
LDR R1,=SPI1_ ;0x40013000SPI1基址
LDR R0,[R1,#0X0C]
MOV R0,#0
STR R0,[R1,#0X08] ;清RXNE接收缓冲非空状态标志 ;
MOV R0,#0X55
STR R0,[R1,#0X0C]
POP {PC}
ENDP
;主程序---------------------------------------------------------------
Reset_Handler PROC
ENTRY
LDR R0,=RCC_ ;0x40021000时钟控制基址
MOV R1,#0X1005 ;SPI1,GPIOA端口时钟使能
STR R1,[R0,#0X18] ;RCC_APB2ENR外设时钟使能寄存器
LDR R0,=GPIOA_ ;GPIOA端口基址
LDR R1,=0X34334434 ;配置PA1,PA4,PA5,PA6,PA7
STR R1,[R0,#0X00] ;GPIOA_CRL端口配置寄存器
LDR R0,=NVIC_ ;0xE000E000中断控制器基址
MOV R1,#0X08 ;SPI1中断号位35
STR R1,[R0,#0X104] ;开放TSPI1中断
LDR R1,=SPI1_ ;0x40013000 SPI1基址
MOV R0,#0X04
STRH R0,[R1,#0X04] ;SPI控制寄存器2(SPI_CR2)
MOV R0,#0X7F ;
STRH R0,[R1,#0X00] ;SPI控制寄存器1(SPI_CR1)
MOV R0,#0X44
STRH R0,[R1,#0X04] ;SPI控制寄存器2(SPI_CR2)
MOV R0,#0X55
STR R0,[R1,#0X0C] ;SPI 数据寄存器(SPI_DR)
SGU5 MOV R0,#0
B SGU5
ENDP
;引脚PA1,PA4,PA5,PA6,PA7输出肯定完好的,程序等进入SPI中断,而且PA1有信号输出,
;但是SPI1_MOSI(PA7),SPI1_SCK(PA5)就是没动静(示波器看都没信号,低电平),不知何原因?
;那位老师能替我分析一下到底哪里有错? |
|