这几天在做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引脚,都没有波形输出,请各位帮我看看,谢谢!
此帖出自
小平头技术问答
一周热门 更多>