久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開(kāi)始

搜索
查看: 2831|回復(fù): 14
打印 上一主題 下一主題
收起左側(cè)

STM32CBT6單片機(jī)SPI通信,端口重定義引腳PA15,PB3,PB4,PB5

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:1102481 發(fā)表于 2024-1-25 15:12 | 只看該作者 回帖獎(jiǎng)勵(lì) |倒序?yàn)g覽 |閱讀模式
300黑幣
描述:原本使用的SPI2,端口PB12.13.15   PA0  正常顯示   對(duì)應(yīng)  CS,SCLK,SDA,RS(命令/數(shù)據(jù))
         換成SPI1,端口 PA15,PB3.4.5                               對(duì)應(yīng)  CS,SCLK,RS(命令/數(shù)據(jù)),SDA    問(wèn)題:換了以后,不能顯示。只換PA15,可以顯示,所以問(wèn)題出在PB345這塊。請(qǐng)教大家
#include "SPI.h"

void GPIO_Config(void)
{
        GPIO_InitTypeDef GPIO_InitStructure;
    RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB | RCC_APB2Periph_GPIOA | RCC_APB2Periph_AFIO, ENABLE);
          RCC_APB2PeriphClockCmd(RCC_APB2Periph_SPI1, ENABLE);
        
                //對(duì)應(yīng)的SCK   PB3
                GPIO_PinRemapConfig(GPIO_Remap_SWJ_JTAGDisable , ENABLE);
                GPIO_PinRemapConfig(GPIO_Remap_SPI1 , ENABLE);
                GPIO_InitStructure.GPIO_Pin =  GPIO_Pin_3;
    GPIO_InitStructure.GPIO_Speed = GPIO_Speed_10MHz;
    GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;
    GPIO_Init(GPIOB, &GPIO_InitStructure);
        
            //MOSI為 SDA       PB 5  
                GPIO_PinRemapConfig(GPIO_Remap_SPI1 , ENABLE);
    GPIO_InitStructure.GPIO_Pin =   GPIO_Pin_5;
    GPIO_InitStructure.GPIO_Speed = GPIO_Speed_10MHz;
    GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;
    GPIO_Init(GPIOB, &GPIO_InitStructure);
               
                //MISO__A0 --  PB4        
                GPIO_PinRemapConfig(GPIO_Remap_SWJ_JTAGDisable , ENABLE);
                GPIO_PinRemapConfig(GPIO_Remap_SPI1 , ENABLE);
    GPIO_InitStructure.GPIO_Pin =   GPIO_Pin_4;
    GPIO_InitStructure.GPIO_Speed = GPIO_Speed_10MHz;
    GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
    GPIO_Init(GPIOB, &GPIO_InitStructure);

        //液晶初始化I/O口  rst      PA0  --rst
    GPIO_InitStructure.GPIO_Pin =   GPIO_Pin_0;        
    GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;      
    GPIO_InitStructure.GPIO_Speed = GPIO_Speed_10MHz;
    GPIO_Init(GPIOA, &GPIO_InitStructure);
        //片選    PA15___CS
                GPIO_PinRemapConfig(GPIO_Remap_SWJ_JTAGDisable , ENABLE);
                GPIO_PinRemapConfig(GPIO_Remap_SPI1 , ENABLE);
                GPIO_InitStructure.GPIO_Pin = GPIO_Pin_15;        
    GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;      
    GPIO_InitStructure.GPIO_Speed = GPIO_Speed_10MHz;
    GPIO_Init(GPIOA, &GPIO_InitStructure);
}

void SPI_Initial()
{

        SPI_InitTypeDef  SPI_InitStructure;
  RCC_APB2PeriphClockCmd(RCC_APB2Periph_SPI1, ENABLE);
  SPI_InitStructure.SPI_Direction = SPI_Direction_1Line_Tx;//設(shè)置SPI單向或者雙向的數(shù)據(jù)模式:SPI設(shè)置為雙線雙向全雙工
  SPI_InitStructure.SPI_Mode = SPI_Mode_Master;        //設(shè)置SPI工作模式:設(shè)置為主SPI
  SPI_InitStructure.SPI_DataSize = SPI_DataSize_8b;//設(shè)置SPI的數(shù)據(jù)大小:SPI發(fā)送接收8位幀結(jié)構(gòu)
  SPI_InitStructure.SPI_CPOL = SPI_CPOL_High;//選擇了串行時(shí)鐘的穩(wěn)態(tài):時(shí)鐘懸空高
  SPI_InitStructure.SPI_CPHA = SPI_CPHA_2Edge;//數(shù)據(jù)捕獲于第二個(gè)時(shí)鐘沿
  SPI_InitStructure.SPI_NSS = SPI_NSS_Soft;         //NSS信號(hào)由硬件(NSS管腳)還是軟件(使用SSI位)管理:內(nèi)部NSS信號(hào)有SSI位控制
  SPI_InitStructure.SPI_BaudRatePrescaler = SPI_BaudRatePrescaler_8;//定義波特率預(yù)分頻的值:波特率預(yù)分頻值為2
  SPI_InitStructure.SPI_FirstBit = SPI_FirstBit_MSB; //指定數(shù)據(jù)傳輸從MSB位還是LSB位開(kāi)始:數(shù)據(jù)傳輸從MSB位開(kāi)始
  SPI_Init(SPI1, &SPI_InitStructure);         //根據(jù)SPI_InitStruct中指定的參數(shù)初始化外設(shè)SPIx寄存器

  SPI_Cmd(SPI1, ENABLE);
}

void RCC_Configuration(void)
{
  ErrorStatus HSEStartUpStatus;
  /*RCC 復(fù)位和時(shí)鐘設(shè)置*/
  /* RCC system reset(for debug purpose) */
  RCC_DeInit();                                         //時(shí)鐘管理重置

  /* Enable HSE 外部高速晶振*/
  RCC_HSEConfig(RCC_HSE_ON);                   //打開(kāi)外部晶振

  /* Wait till HSE is ready 等待外部晶振 就緒, 返回值:SUCCESS 就緒,ERROR 未就緒*/
  HSEStartUpStatus = RCC_WaitForHSEStartUp();

  if(HSEStartUpStatus == SUCCESS)
  {
    /* Enable Prefetch Buffer */
    FLASH_PrefetchBufferCmd(FLASH_PrefetchBuffer_Enable);    //Flash讀取緩沖啟動(dòng)Flash預(yù)取值    加速

    /* Flash 2 wait state */
    FLASH_SetLatency(FLASH_Latency_2);                                            //Flash操作的延時(shí)設(shè)置Flash_Latency延時(shí)2周期

    /* HCLK = SYSCLK */
    RCC_HCLKConfig(RCC_SYSCLK_Div1);                                         //AHB使用系統(tǒng)時(shí)鐘

    /* PCLK2 = HCLK */
    RCC_PCLK2Config(RCC_HCLK_Div1);                                  //APB2(高速)為HCLK的一半
        
    /* PCLK1 = HCLK/2 */
    RCC_PCLK1Config(RCC_HCLK_Div2);                           //APB1(低速)為HCLK的一半
        //注:AHB主要負(fù)責(zé)外部存儲(chǔ)器時(shí)鐘。APB2負(fù)責(zé)AD,I/O,高級(jí)TIM,串口1。APB1負(fù)責(zé)DA,USB,SPI,I2C,CAN,串口2345,普通TIM
    /* ADCCLK = PCLK2/4 */
    RCC_ADCCLKConfig(RCC_PCLK2_Div4);        //默認(rèn)4

    /* PLLCLK = 8MHz * 7 = 56 MHz   注意此處的8M是指的外部晶振的大小*/  
        
    RCC_PLLConfig(RCC_PLLSource_HSE_Div1, RCC_PLLMul_9);      //PLLCLK = 8MHz * 9 = 72 MH      默認(rèn)為7  

    /* Enable PLL */
    RCC_PLLCmd(ENABLE);                                                                                //啟動(dòng)PLL

    /* Wait till PLL is ready */
    while(RCC_GetFlagStatus(RCC_FLAG_PLLRDY) == RESET){}       //等待PLL啟動(dòng)

    /* Select PLL as system clock source */
    RCC_SYSCLKConfig(RCC_SYSCLKSource_PLLCLK);                                //將PLL設(shè)置為系統(tǒng)時(shí)鐘源

    /* Wait till PLL is used as system clock source */
    while(RCC_GetSYSCLKSource() != 0x08){}                          //等待系統(tǒng)時(shí)鐘源的啟動(dòng)
  }
}

void SPI_SendData(uint8_t byte)
{
  while (SPI_I2S_GetFlagStatus(SPI1, SPI_I2S_FLAG_TXE) == RESET);   
  SPI_I2S_SendData(SPI1, byte);
}

最佳答案

查看完整內(nèi)容

或許你我的手上的手冊(cè)不一樣? 我手上的這份明白表示,PB3/4/5,沒(méi)有原生態(tài)SPI接口,連映射的都沒(méi)有。既然本就沒(méi)有,你映射過(guò)去也依然沒(méi)用。 至于只換PA15可以,是因?yàn)槟愕腟PI_NSS是由軟件控制的,可以是任意IO。 而硬件控制,則需跟隨SPIx的群組走了。 附上手冊(cè),其中第21頁(yè)你看一下。 如果確定有SPI,那恐怕是要查一下外圍了。
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復(fù)

使用道具 舉報(bào)

來(lái)自 2#
ID:1102481 發(fā)表于 2024-1-26 10:12 | 只看該作者
cocolala 發(fā)表于 2024-1-25 21:17
看下JTAG默認(rèn)的IO口,注意映射問(wèn)題。

如圖,JTAG 占用PA15,PB3.PB4,       已經(jīng)用代碼         RCC_APB2PeriphClockCmdRCC_APB2Periph_AFIO,ENABLE);                                                                               GPIO_PinRemapConfig(GPIO_Remap_SWJ_JTAGDisable , ENABLE);                                                                               GPIO_PinRemapConfig(GPIO_Remap_SPI1 , ENABLE);




開(kāi)啟AFIO,將PB3.4變?yōu)槠胀ǹ谧樱恢滥睦镞是不行。




1706234833762.png (233.21 KB, 下載次數(shù): 103)

1706234833762.png
回復(fù)

使用道具 舉報(bào)

板凳
ID:69038 發(fā)表于 2024-1-25 15:12 | 只看該作者
或許你我的手上的手冊(cè)不一樣?
我手上的這份明白表示,PB3/4/5,沒(méi)有原生態(tài)SPI接口,連映射的都沒(méi)有。既然本就沒(méi)有,你映射過(guò)去也依然沒(méi)用。
至于只換PA15可以,是因?yàn)槟愕腟PI_NSS是由軟件控制的,可以是任意IO。
而硬件控制,則需跟隨SPIx的群組走了。

附上手冊(cè),其中第21頁(yè)你看一下。
STM32F103X8.pdf (15.39 MB, 下載次數(shù): 3)


如果確定有SPI,那恐怕是要查一下外圍了。
回復(fù)

使用道具 舉報(bào)

地板
ID:1102481 發(fā)表于 2024-1-25 15:14 | 只看該作者
這個(gè)是測(cè)試包,問(wèn)題在   SPI和LCD12864部分

測(cè)試.7z

170.05 KB, 下載次數(shù): 3

回復(fù)

使用道具 舉報(bào)

5#
ID:883242 發(fā)表于 2024-1-25 16:03 | 只看該作者
stm32更新?lián)Q代好多次了,具體型號(hào)都不肯說(shuō)誰(shuí)也幫不了你,說(shuō)了其實(shí)也沒(méi)用因?yàn)樘嗔耍是自己用CubeMX配置一下好一些。

如果是第一代STM32F103才可以用這個(gè)STDPeripheral庫(kù)。
回復(fù)

使用道具 舉報(bào)

6#
ID:161164 發(fā)表于 2024-1-25 16:08 | 只看該作者
30塊包郵的邏輯分析儀,你值得擁有
回復(fù)

使用道具 舉報(bào)

7#
ID:137005 發(fā)表于 2024-1-25 16:12 | 只看該作者
STM32 PB3 PB4 PB5作為普通IO,用作SPI使用
https://blog.csdn.net/feiyingzaishi/article/details/103108929

評(píng)分

參與人數(shù) 1黑幣 +12 收起 理由
衛(wèi)玉書(shū) + 12 共享資料的黑幣獎(jiǎng)勵(lì)!

查看全部評(píng)分

回復(fù)

使用道具 舉報(bào)

8#
ID:226055 發(fā)表于 2024-1-25 21:17 | 只看該作者
    看下JTAG默認(rèn)的IO口,注意映射問(wèn)題。
回復(fù)

使用道具 舉報(bào)

9#
ID:1102481 發(fā)表于 2024-1-26 10:04 | 只看該作者
Hephaestus 發(fā)表于 2024-1-25 16:03
stm32更新?lián)Q代好多次了,具體型號(hào)都不肯說(shuō)誰(shuí)也幫不了你,說(shuō)了其實(shí)也沒(méi)用因?yàn)樘嗔耍是自己用CubeMX配置 ...

不好意思,打錯(cuò)字了,STM32F103C8T6,第一次用這個(gè)懸賞,提示我有%詞匯,然后可能刪除的時(shí)候,漏了。
確實(shí)太多了。具體問(wèn)題已經(jīng)指出,SPI1端口重映射的問(wèn)題,但是可能第一次用端口映射,這里面問(wèn)題不清楚在哪里,所以求助大家,也不知道如何將懸賞給大家
回復(fù)

使用道具 舉報(bào)

10#
ID:1102481 發(fā)表于 2024-1-26 10:06 | 只看該作者
Hephaestus 發(fā)表于 2024-1-25 16:03
stm32更新?lián)Q代好多次了,具體型號(hào)都不肯說(shuō)誰(shuí)也幫不了你,說(shuō)了其實(shí)也沒(méi)用因?yàn)樘嗔耍是自己用CubeMX配置 ...

好的,謝謝你的建議
回復(fù)

使用道具 舉報(bào)

11#
ID:1102481 發(fā)表于 2024-1-26 10:14 | 只看該作者
lkc8210 發(fā)表于 2024-1-25 16:08
30塊包郵的邏輯分析儀,你值得擁有

小白,第一次聽(tīng)說(shuō),好的,我看看。謝謝
回復(fù)

使用道具 舉報(bào)

12#
ID:69038 發(fā)表于 2024-1-26 11:53 | 只看該作者
103Cx系列貌似沒(méi)有SPI3。甚至低容量版本(<64K)的只有一個(gè)SPI1
只有在STM32F103Rx/Vx/Zx中,PB3/4/5才是SPI3,
在CBT6中PB3/4/5只是GPIO和Jlink接口,也不能映射到SPI1,你要的SPI1在PA4/5/6。
回復(fù)

使用道具 舉報(bào)

13#
ID:1102481 發(fā)表于 2024-1-26 17:14 | 只看該作者
zhuls 發(fā)表于 2024-1-26 11:53
103Cx系列貌似沒(méi)有SPI3。甚至低容量版本(

是的,沒(méi)有用到SPI3,原來(lái)用的SPI2,后來(lái)IO不夠,改成用SPI1。
我的問(wèn)題就是如何正確的在基礎(chǔ)代碼基礎(chǔ)上,成功改到SPI1(注意看題)。然后8樓是C8T6的引腳資源,
關(guān)閉JTAG,開(kāi)啟AFIO,   PB5的IIC也關(guān)了,SPI2也試著關(guān)了,暫時(shí)沒(méi)用。
回復(fù)

使用道具 舉報(bào)

14#
ID:1102481 發(fā)表于 2024-1-29 10:16 | 只看該作者
zhuls 發(fā)表于 2024-1-25 15:12
或許你我的手上的手冊(cè)不一樣?
我手上的這份明白表示,PB3/4/5,沒(méi)有原生態(tài)SPI接口,連映射的都沒(méi)有。既然 ...

感謝 ,您的手冊(cè)和我的確實(shí)不一樣。我又看了一下這個(gè)數(shù)據(jù)手冊(cè),確實(shí)有SPI1的映射,不過(guò)您的關(guān)于PA15的回答確實(shí)解決了我一個(gè)困惑,,謝謝您無(wú)私的指點(diǎn)。我再找找其他問(wèn)題,祝新年快樂(lè)
回復(fù)

使用道具 舉報(bào)

15#
ID:1102481 發(fā)表于 2024-1-29 10:19 | 只看該作者
molo 發(fā)表于 2024-1-25 16:12
STM32 PB3 PB4 PB5作為普通IO,用作SPI使用
https://blog.csdn.net/feiyingzaishi/article/details/103108 ...

實(shí)在抱歉,最佳答案只能有一個(gè),感謝您的指點(diǎn)
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

手機(jī)版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 国产精品v | 国产自产c区 | 中文字幕一区二区不卡 | 91高清在线观看 | 国产一区二区在线91 | 国产激情视频 | 国产91亚洲精品一区二区三区 | 欧美精品91爱爱 | 国产高清一区二区三区 | 艹逼网 | 91精品久久久久久久久 | 伊人久久免费视频 | 99色综合 | 久久精品国产免费看久久精品 | 日韩精品久久久久久 | 日韩精品在线视频免费观看 | 九九久久国产 | 自拍偷拍3p | 久免费视频 | 亚洲精品字幕 | 欧美日韩国产一区二区三区 | 毛片国产| 精品国模一区二区三区欧美 | 久国产视频 | 在线观看中文字幕 | 亚洲午夜精品久久久久久app | 亚洲色图插插插 | h在线免费观看 | 国产免国产免费 | 欧美中文在线 | 久久精品无码一区二区三区 | 久久国产精品网站 | 亚洲狠狠丁香婷婷综合久久久 | 成人网在线观看 | 久久精品播放 | 精品一二三 | 国产一区免费视频 | 国产精品一区免费 | 在线观看久草 | 亚洲 日本 欧美 中文幕 | 欧美精品在线免费观看 |