diff --git a/usersrc/usermain.c b/usersrc/usermain.c index 011fccb..66671f3 100644 --- a/usersrc/usermain.c +++ b/usersrc/usermain.c @@ -4,6 +4,7 @@ #include #include "main.h" #include "usart.h" +#include "tim.h" #define READ_CMD 0x80 #define SPI_TIMEOUT_VALUE 1000 @@ -17,6 +18,16 @@ #define Dummy_Byte 0xFF // 读取时MISO发送的数据,可以为任意数据 +void sys_sys_delay_us(uint32_t us) { + uint16_t counter = 0; + __HAL_TIM_SET_COUNTER(&htim7, 0); + HAL_TIM_Base_Start(&htim7); + while (counter < us) { + counter = __HAL_TIM_GET_COUNTER(&htim7); + } + HAL_TIM_Base_Stop(&htim7); +} + // SPI可以同时读取和写入数据,因此一个函数即可满足要求 uint8_t SPI_ReadWriteByte(uint8_t txData) { @@ -26,7 +37,7 @@ uint8_t SPI_ReadWriteByte(uint8_t txData) for (i = 0; i < 8; i++) { SPI_SCK_0(); - delay_us(1); + sys_delay_us(1); // 数据发送 if (txData & 0x80) { @@ -37,17 +48,17 @@ uint8_t SPI_ReadWriteByte(uint8_t txData) SPI_MOSI_0(); } txData <<= 1; - delay_us(1); + sys_delay_us(1); SPI_SCK_1(); - delay_us(1); + sys_delay_us(1); // 数据接收 rxData <<= 1; if (SPI_READ_MISO()) { rxData |= 0x01; } - delay_us(1); + sys_delay_us(1); } SPI_SCK_0();