void SPI_Initial( void ) { //Set as default SPI_DeInit( ); //Set the priority of the SPI SPI_Init(); //Config the GPIOs for SPI bus SPI_GPIO_Init(); } void SPI_DeInit(void) { SPI1_CR1 = 0x00; SPI1_CR2 = 0x00; SPI1_ICR = 0x00; SPI1_SR = 0x02; } void SPI_Init(void) { SYSCFG_RMPCR1 |= 0x80; //选择复用SPI接口为PA2,PA3,PC5 SPI1_CR1 = 0x00; //先发送MSB,波特率000,SCK空闲为低,数据采样第一个时钟边沿开始 SPI1_CR2 = 0x03; SPI1_CR1 |= 0x40; //启动SPI总线 SPI1_CRCPR = 0x07; SPI1_CR1 |= 0x40; } void SPI_GPIO_Init(void) { PA_DDR |= ~(1<<MISO); PA_CR1 |= ~(1<<MISO); PA_CR2 |= ~(1<<MISO); //设置PA2,复用MISO时为悬浮输入 PA_DDR |= (1<<MOSI); PA_CR1 |= (1<<MOSI); PA_CR2 |= (1<<MOSI); //设置PA3,复用MOSI时为推挽输出 PC_DDR |= (1<<SCK); PC_CR1 |= (1<<SCK); PC_CR2 |= (1<<SCK); //设置PC6,复用SCK时为推挽输出 PC_DDR |= (1<<CSN); PC_CR1 |= (1<<CSN); PC_CR2 |= (1<<CSN); //设置PC5,复用CSN时为推挽输出 } #define MISO 2 #define MOSI 3 #define SCK 6 #define CSN 5 以上是我初始化SPI的程序,参考了官方的例程修改的,但是调试一直通不过,SPI没有输出 |
STMS005K6T6 如何采集内部参考电压。
stm8s003 adc中断和通道切换的问题
adc施密特触发器stm8
stm8l051f3 TSSOP20 封装,待机模式下,2天后,电流突然增加到140UA
STM8S用STVP烧录怎么加密?
如何使用ST官网例程_LIN总线通讯_STM8AF
STM8 LIN
IAR代码编辑太费劲了,想问一下有没有好的方法,试了VScode但是头文件老是报错,调了很久也没调好,想换个方法了。
想问一下各位大佬,IAR下载调试代码时出现 warning: is an illegal data sample expression IAR是什么意思啊?
STM8S标准库TIM1编码器功能不计数,请大师帮我看看
STM8S系列里确实有,可以在STVP里设置,但是STM8L其他的我不知道,但是STM8L051的没有可以设置的选项
还有,SPI外设的时钟要手动开启的哦,默认是关闭的。
CLK_PeripheralClockConfig(CLK_Peripheral_SPI1, ENABLE);
GPIO_Init(GPIOB, GPIO_Pin_4, GPIO_Mode_Out_PP_High_Fast); //NSS片选
GPIO_Init(GPIOB, GPIO_Pin_5, GPIO_Mode_Out_PP_High_Fast); //SCK
GPIO_Init(GPIOB, GPIO_Pin_6, GPIO_Mode_Out_PP_High_Fast); //MOSI
//主机模式,配置为输入
GPIO_Init(GPIOB, GPIO_Pin_7, GPIO_Mode_In_PU_No_IT); //MISO
BSP1_RFID_PowerOn(); //给RC522芯片上电
//BSP1_RFID_PowerOff();
SPI_DeInit(SPI1);
SPI_Init(SPI1, SPI_FirstBit_MSB, SPI_BaudRatePrescaler_8, SPI_Mode_Master,SPI_CPOL_Low, SPI_CPHA_1Edge,SPI_Direction_2Lines_FullDuplex, SPI_NSS_Soft, 0x07);
//SPI_Init(SPI1, SPI_FirstBit_MSB, SPI_BaudRatePrescaler_128, SPI_Mode_Master,SPI_CPOL_High, SPI_CPHA_2Edge,SPI_Direction_2Lines_FullDuplex, SPI_NSS_Soft, 0x07);
SPI_Cmd(SPI1, ENABLE); /* 使能SPI */
rv = BSP1_RFID_Reset(&ctrl_reg, &ver_reg); //和PcdReset库函数一模一样
printf("ctrl_reg:%02X, ver_reg:%02X\r\n", ctrl_reg, ver_reg);
if (rv != 0)
{
printf("rfid init error\r\n");
}
BSP_RFID_AntennaOff();
delay_ms(1);
BSP_RFID_AntennaOn();
BSP_RFID_ConfigISOType('A'); //针对ISO14443A型卡进行初始化