资源简介
使用GPIO端口模拟SPi协议,可以根据端口设置,自行修改宏定义,修改引脚时钟

代码片段和文件信息
#include “bsp_spi.h“
#include “delay.h“
void SPI_Gpio_Init(void)
{
GPIO_InitTypeDef GPIO_InitStruct;
RCC_AHBPeriphClockCmd(SPI_RCC ENABLE);
GPIO_InitStruct.GPIO_Mode = GPIO_Mode_OUT;
GPIO_InitStruct.GPIO_OType = GPIO_OType_PP;
GPIO_InitStruct.GPIO_Pin = SPI_CS_PIN | SPI_CLK_PIN | SPI_MOSI_PIN;
GPIO_InitStruct.GPIO_PuPd = GPIO_PuPd_DOWN;
GPIO_InitStruct.GPIO_Speed = GPIO_Speed_Level_3;
GPIO_Init(SPI_GPIOx &GPIO_InitStruct);
GPIO_InitStruct.GPIO_Pin = SPI_MISO_PIN;
GPIO_InitStruct.GPIO_Mode = GPIO_Mode_IN;
GPIO_Init(SPI_GPIOx &GPIO_InitStruct);
GPIO_SetBits(SPI_GPIOxSPI_CS_PIN);
GPIO_SetBits(SPI_GPIOxSPI_MISO_PIN);
GPIO_ResetBits(SPI_GPIOx SPI_CLK_PIN);
}
void SPI_Send_Data(uint8_t data)
{
uint8_t i=0;
for(i=0 ; i<8 ; i++)
{
if(data & 0x80)
{
GPIO_SetBits(SPI_GPIOx SPI_MOSI_PIN);
}
else
{
GPIO_ResetBits(SPI_GPIOx SPI_MOSI_PIN);
}
data <<=1;
GPIO_SetBits(SPI_GPIOx SPI_CLK_PIN);
delay_us(1);
GPIO_ResetBits(SPI_GPIOx SPI_CLK_PIN);
delay_us(1);
}
}
uint8_t SPI_Get_Data(void)
{
uint8_t i=0;
uint8_t redata=0;
for(i=0 ; i<8 ; i++)
{
GPIO_SetBits(SPI_GPIOx SPI_CLK_PIN);
if(GPIO_ReadInputDataBit(SPI_GPIOx SPI_MISO_PIN))
{
redata |= (0x01<<(7-i));
}
delay_us(1);
GPIO_ResetBits(SPI_GPIOx SPI_CLK_PIN);
delay_us(1);
}
return redata;
}
void SPI_CS_Status(uint8_t status)
{
if(status ==1)
GPIO_SetBits(SPI_GPIOx SPI_CS_PIN);
else if(status ==0)
GPIO_ResetBits(SPI_GPIOx SPI_CS_PIN);
}
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 537 2019-05-22 19:44 bsp_spi.h
文件 1645 2019-05-22 19:44 bsp_spi.c
----------- --------- ---------- ----- ----
2182 2
相关资源
- STM32F103C8T6硬件I2C2成功驱动ADS1115源代
- STM32F407ZGT6实现HAL库硬件I2C读写EEPROM功
- arm的startup.s解析
- stm32做的红外遥控解码程序
- nmos转移特性曲线hspice程序—&mdas
- 《emwin实战指南(基于STM32-ISO开发板)
- Beginning STM32: Developing with FreeRTOS libo
- stm32f103c8t6_sch.Lib
- ALIENTEK战舰STM32F1 V3开发板原理图.rar
- STM32F103RC+ADC+DMA多通道采样LCD显示
- I2C读写AT24C02 基于STM32F103 cube116540
- 基于stm32f103ve的程序——跑马灯实验
- 基于STM32RCT6的步进电机驱动程序
- stm32f407上的两个can发送和接收例程
- STM32 led 时钟
- STM32 2.4G通信例程
- Spire API文档
- 直流无刷电机方波驱动 stm32 例程代码
- IAR For ARM 7.3最新注册机
- STM32中文资料
- 郭天祥ARM9视频教程
- IAR ARM 7.8破解
- IAR For ARM V5.5 注册机
- IAR for ARM 7.40 破解
- IAR For ARM 7.4 破解
- STM32蓝牙和串口程序
- The direction of synaptic plasticity mediated
- STM32f103超声波模块例程
- stm32f103c8t6 4 oled.rar
- stm32f030 IAP Demo(原创)
评论
共有 条评论