;下面的汇编定义了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)就是没动静(示波器看都没信号,低电平),不知何原因? ;那位老师能替我分析一下到底哪里有错? |
RE:配置了SPI参数,可SPI_SCK没信号输出???
回复:配置了SPI参数,可SPI_SCK没信号输出???
至少SPI1_SCK上也该有信号啊!!
RE:配置了SPI参数,可SPI_SCK没信号输出???
回复:配置了SPI参数,可SPI_SCK没信号输出???
你可以确认一下:
1、SPI时钟使能
2、IO配置,IO时钟
RE:配置了SPI参数,可SPI_SCK没信号输出???
STR R0,[R1,#0X0C] ;SPI 数据寄存器(SPI_DR)
这就是发了数据了!!而且中断程序中也有的!!
RE:配置了SPI参数,可SPI_SCK没信号输出???
IO配置,IO时钟
都配置了!!
RE:配置了SPI参数,可SPI_SCK没信号输出???
回复:配置了SPI参数,可SPI_SCK没信号输出???