国产精品免费无遮挡无码永久视频-国产高潮视频在线观看-精品久久国产字幕高潮-国产精品99精品无码视亚

電子工程網(wǎng)

標(biāo)題: spi [打印本頁(yè)]

作者: qmpzzpmq    時(shí)間: 2013-1-28 14:57
標(biāo)題: spi
#include
#include "sys.h"
#include "usart.h"               
#include "delay.h"
#include "stm32f10x_spi.h"
//2012.12.5開(kāi)始 12.10 stm32正常
void SPI2init()
{
        RCC->APB2ENR|=0x00000028;//使能時(shí)鐘GPIOB,D時(shí)鐘
        RCC->APB1ENR|=1<<14;//使能SPI2口時(shí)鐘
       
        GPIOB->CRH&=0x000FFFFF;        //PB13,14,15初始給高電平
        GPIOB->CRH|=0xBBB00000;        //
        GPIOB->ODR|=0x0000E000;//初始為高電平
       
        GPIOB->CRH&=0x000FFFFF;        //PB13,14,15復(fù)用 50HZ 推挽輸出
        GPIOB->CRH|=0xBBB00000;

        SPI2->CR1=0x0000;//全部清零
        /*SPI2->CR1|=0x023E;//選擇STM32為主設(shè)備,256分頻,從第1個(gè)跳變開(kāi)始采樣,SCK空閑時(shí)為高電平,nss軟件管理, 16bit讀寫(xiě)
        SPI2->CR1&=0<<8;
        SPI2->CR1|=0x0040;//SPI使能*/
        SPI2->CR1|=0<<10;//全雙工模式       
        SPI2->CR1|=1<<9; //軟件nss管理
        SPI2->CR1|=1<<8;  

        SPI2->CR1|=1<<2; //SPI主機(jī)
        SPI2->CR1|=0<<11;//8bit數(shù)據(jù)格式       
        SPI2->CR1|=1<<1; //空閑模式下SCK為1 CPOL=1
        SPI2->CR1|=1<<0; //數(shù)據(jù)采樣從第二個(gè)時(shí)間邊沿開(kāi)始,CPHA=1  
        SPI2->CR1|=7<<3; //Fsck=Fcpu/256
        SPI2->CR1|=0<<7; //MSBfirst   
        SPI2->CR1|=1<<6; //SPI設(shè)備使能
}

void SPI1init()
{
        RCC->APB2ENR|=0x00001004;//使能SPI1時(shí)鐘,GPIOA時(shí)鐘

        GPIOA->CRL&=0x000fffff;                                                       
        GPIOA->CRL|=0xBBB000000;

        SPI1->CR1=0x0000;//全部清零
        SPI1->CR1|=1<<9;//nss軟件管理
        SPI1->CR1|=0<<8;//nss置位
        SPI1->CR1|=1<<1; //空閑模式下SCK為1 CPOL=1
        SPI1->CR1|=1<<0; //數(shù)據(jù)采樣從第二個(gè)時(shí)間邊沿開(kāi)始,CPHA=1
        SPI1->CR1|=0<<11;//8bit數(shù)據(jù)格式
        SPI1->CR1|=0<<2; //SPI從機(jī)
        SPI1->CR1|=0<<7; //MSBfirst
        SPI1->CR1|=1<<6;//使能
}
u8 SPI2_ReadWriteByte(u8 TxData)
{
        u8 retry=0;
        while((SPI2->SR&1<<1)==0)//等待發(fā)送區(qū)空
        {
                retry++;
                if(retry>200)return 0;
        }
                SPI2->DR=0xff; //發(fā)送一個(gè)byte
                retry=0;
        while((SPI2->SR&1<<0)==0) //等待接收完一個(gè)byte
        {
        retry++;
        if(retry>200)return 0;
        }
                return SPI2->DR; //返回收到的數(shù)據(jù)
}
u8 SPI1_ReadWriteByte(u8 TxData)
{
        u8 retry=0;
        while((SPI1->SR&1<<1)==0)//等待發(fā)送區(qū)空
        {
                retry++;
                if(retry>200)return 0;
        }
                SPI1->DR=(u16)TxData; //發(fā)送一個(gè)byte
                retry=0;
        while((SPI1->SR&1<<0)==0) //等待接收完一個(gè)byte
        {
        retry++;
        if(retry>200)return 0;
        }
                return SPI1->DR; //返回收到的數(shù)據(jù)
}
int main(void)
{       
        u8 test=0;
          Stm32_Clock_Init(9);//系統(tǒng)時(shí)鐘設(shè)置
        delay_init(72);                //延時(shí)初始化
        SPI2init();
        SPI1init();
        while(test==0)
        {
                SPI2_ReadWriteByte(0xff);
                test=SPI1_ReadWriteByte(0x00);
                delay_ms(10);
        }
}

我把兩個(gè)SPI直接連接在了一起,結(jié)果發(fā)現(xiàn)收到的死活都是test==0,不知道哪里錯(cuò)了,希望各位斧正


作者: HUCHUAN987    時(shí)間: 2013-3-17 14:04
同等高手解答~~~




歡迎光臨 電子工程網(wǎng) (http://www.4huy16.com/) Powered by Discuz! X3.4