|
串口采用控制器,IIC與spi采用了模擬時序
0.png (40.06 KB, 下載次數(shù): 63)
下載附件
2018-8-30 17:07 上傳
stm32單片機源程序如下:
- #include "spi.h"
- #include "uart.h"
- #include "stdio.h"
- #include "delay.h"
- void SPI1_Init(void)
- {
- RCC ->AHBENR |=0X01<<18;
- RCC ->APB2ENR |=0x01<<12;
-
- //SCK(pb3) MOSI(pb5)配置為普通功能推挽輸出
- //端口模式設(shè)置
- //模式----通用輸出模式(01)
- GPIOB->MODER &=~(0x03<<6 |0x03<<10);
- GPIOB->MODER |=0X01<<6 | 0X01<<10;
- //輸出類型----推挽
- GPIOB->OTYPER &= ~(0X01<<3 | 0X01<<5);
- //輸出速度----100M
- GPIOB->OSPEEDR |=0x03<<6 | 0x03<<10;
- //上下拉-----無上拉或下拉
- GPIOB->PUPDR &=~(0x03<<6 |0x03<<10);
-
- //MISO(pb4) 配置為浮空輸入
- GPIOB->MODER &=~(0X03<<8); //pB4為輸入模式
- GPIOB->PUPDR &=~(0X03<<8); //浮空輸入
-
- SCK_0; //SCK空閑電平為低
- }
- //spi讀寫函數(shù)--模式0
- //_data:待發(fā)送的數(shù)據(jù),如果是接收模式,發(fā)送的數(shù)據(jù)則應(yīng)該是0xff
- //返回值:接收到的數(shù)據(jù)。如果是發(fā)送模式,返回值可以丟棄
- u8 SPI1_ReadWriteByte(u8 _data)
- {
- u8 i;
- for(i=0;i<8;i++)
- {
-
- if(_data&0x80) //高位在前
- {
- MOSI_1;
- }
- else
- {
- MOSI_0;
- }
- SCK_1;
- _data=_data<<1;
- delay_us(2);
-
- if(GPIOB ->IDR&0x01<<4) //判斷收到的數(shù)據(jù)
- {
- _data=_data | 0X01;
- }
- SCK_0;
-
- delay_us(2);
- }
- return _data;
- }
復(fù)制代碼
所有資料51hei提供下載:
串口spii2c.zip
(4.63 KB, 下載次數(shù): 156)
2018-8-30 15:15 上傳
點擊文件名下載附件
下載積分: 黑幣 -5
|
|