这几天在做SPI接口的调试工作,最小系统已经做好了,确定可以点亮LED灯。现在调试SPI接口,但SPI引脚并没有连出任何引线,我只是想通过编程,再用示波器测量SPI1的SCK引脚,看是否有时钟输出。
下面是我的主函数:
int main(void) {
/*以下设置时钟*/ RCC_CFGR->SW=2; //设置时钟来源为高速外部时钟HSE 12MHz RCC_CFGR->MCO=6; //设置RCC_CFGR的输出时钟位MCO RCC_CR=0x00010000; //设置高速外部时钟HSE为开启 RCC_APB2ENR=0x00001015; //设置RCC_APB2ENR寄存器,开启SPI1,GPIOA,GPIOC和AFIO时钟
/**以下设置GPIO*/ GPIOA_CRL=0xBBBB4444; //设置PA4、PA5、PA6、PA7为推挽式复用功能,最大速度为50MHz GPIOC_CRH=0x33344444; //设置P13、P14、P15为推挽式输出
/*以下设置SPI1*/ // SPI1_CR1->SPE=0; //先禁用SPI1 SPI1_CR1|=0<<0; //时钟相位设置为数据采集从第一个时钟沿开始 SPI1_CR1|=1<<1; //时钟极性为:空闲状态进,SCK保持高电平 SPI1_CR1|=1<<2; //SPI1设置为主设备 SPI1_CR1|=1<<3; //波特率为Fpclk/4 SPI1_CR1|=0<<7; //帧格式:先发送MSB SPI1_CR1|=1<<8; //NSS为高电平 SPI1_CR1|=1<<9; //开启软件从设备管理 SPI1_CR1|=0<<10; //全双工 SPI1_CR1|=0<<11; //8位数据帧 // SPI1_CR2=0x0004; //设置SPI1_CR2寄存器开启SSOE,使能NSS输出 SPI1_CR1|=1<<6; //开启SPI1
/*点亮LED灯*/ LightLED();
/*从SPI1口发送数据*/
while(1){ spi_send(0xff); } }
编译成功后,下载到板子上,LED亮。但用示波器测MOSI或者SCK引脚,都没有波形输出,请各位帮我看看,谢谢!
|