找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 11088|回復(fù): 11
收起左側(cè)

Proteus仿真stm32f103實現(xiàn)SPI

  [復(fù)制鏈接]
ID:389229 發(fā)表于 2018-8-23 15:12 | 顯示全部樓層 |閱讀模式
stm32f103實現(xiàn)SPI的仿真原理圖如下(proteus仿真工程文件可到本帖附件中下載)
0.png STM32.png

單片機(jī)源程序如下:
  1. #include "stm32f10x.h"
  2. #include "spi.h"
  3. #include "Module.h"

  4. #include<stdio.h>



  5. void Delay_Ms(u16 time);
  6. void RCC_Configuration(void);
  7. //void GPIO_Configuration(void);
  8. u32 retry=0;       
  9. int i=0;

  10. /* Private functions ---------------------------------------------------------*/
  11. /*******************************************************************************
  12. * Function Name  : main
  13. * Description    : Main program.
  14. * Input          : None
  15. * Output         : None
  16. * Return         : None
  17. *******************************************************************************/
  18. int main(void)
  19. {

  20.           RCC_Configuration();//使能外設(shè)時鐘
  21.         //GPIO_Configuration();
  22.         SEG_Init();
  23.         SPI1_Init();       
  24.         //SPI1_SetSpeed(SPI_BaudRatePrescaler_256);       
  25.        
  26.        

  27.        

  28.        
  29.        
  30.        

  31.        

  32.         //========實現(xiàn)數(shù)碼管顯示==========
  33.           while (1)
  34.           {
  35.                        
  36.                        

  37. SEG_Display(8830,0);
  38.                        
  39.                        
  40.                 /*for(i=0;i<9999;i++)
  41.                 {
  42.                         for(j=0;j<500;j++)
  43.                                 SEG_Display(i,0);
  44.                 }        */          
  45.                 //SEG_Display(1234,3);
  46.           }
  47. }

  48. /*******************************************************************************
  49. * Function Name  : Delay_Ms
  50. * Description    : delay 1 ms.
  51. * Input          : time (ms)
  52. * Output         : None
  53. * Return         : None
  54. *******************************************************************************/
  55. void Delay_Ms(u16 time)  //延時函數(shù)
  56. {
  57.         u16 i,j;
  58.         for(i=0;i<time;i++)
  59.                   for(j=1000;j>0;j--);
  60. }

  61. /*******************************************************************************
  62. * Function Name  : RCC_Configuration
  63. * Description    : Configures the different system clocks.
  64. * Input          : None
  65. * Output         : None
  66. * Return         : None
  67. *******************************************************************************/
  68. void RCC_Configuration(void)
  69. {
  70.         //==========================使用外部RC晶振========================================
  71.           RCC_DeInit();                                //初始化為缺省狀態(tài)
  72.         //RCC_HSICmd(ENABLE);
  73.           RCC_HSEConfig(RCC_HSE_ON);  //高速時鐘使能
  74.           while (RCC_GetFlagStatus(RCC_FLAG_HSERDY) == RESET);  //等待高速時鐘使能就緒

  75.     FLASH_PrefetchBufferCmd(FLASH_PrefetchBuffer_Enable);        //Enable Prefetch Buffer
  76.     FLASH_SetLatency(FLASH_Latency_2);                                                  // Flash 2 wait state
  77.     RCC_HCLKConfig(RCC_SYSCLK_Div1);                                                 // HCLK = SYSCLK
  78.     RCC_PCLK2Config(RCC_HCLK_Div1);                                                        // PCLK2 = HCLK
  79.     RCC_PCLK1Config(RCC_HCLK_Div2);                                                          // PCLK1 = HCLK/2
  80.     RCC_PLLConfig(RCC_PLLSource_HSE_Div1, RCC_PLLMul_9);        // PLLCLK = 8MHz * 9 = 72 MHz  
  81.     RCC_PLLCmd(ENABLE);                                                                                  // Enable PLL
  82.     while(RCC_GetFlagStatus(RCC_FLAG_PLLRDY) == RESET);                // Wait till PLL is ready

  83.     RCC_SYSCLKConfig(RCC_SYSCLKSource_PLLCLK);                                  // Select PLL as system clock source
  84.     while(RCC_GetSYSCLKSource() != 0x08);                                        // Wait till PLL is used as system clock source
  85.        
  86.        
  87.                 RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA , ENABLE);        // 使能APB2外設(shè)GPIOA時鐘
  88.         RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB , ENABLE);        // 使能APB2外設(shè)GPIOB時鐘
  89.         RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC , ENABLE);        // 使能APB2外設(shè)GPIOC時鐘
  90.         RCC_APB2PeriphClockCmd(RCC_APB2Periph_SPI1 , ENABLE);        // 使能APB2外設(shè)SPI1時鐘
  91. }
復(fù)制代碼

所有資料51hei提供下載:
protues stm32 f103 實現(xiàn)spi.rar (1.56 MB, 下載次數(shù): 253)


評分

參與人數(shù) 1黑幣 +50 收起 理由
admin + 50 共享資料的黑幣獎勵!

查看全部評分

回復(fù)

使用道具 舉報

ID:402264 發(fā)表于 2018-12-4 22:21 | 顯示全部樓層
感謝分享,非常感謝。
回復(fù)

使用道具 舉報

ID:442239 發(fā)表于 2018-12-8 16:35 | 顯示全部樓層
感謝分享,非常感謝。
回復(fù)

使用道具 舉報

ID:251455 發(fā)表于 2018-12-8 22:13 來自手機(jī) | 顯示全部樓層
不錯不錯,謝謝樓主
回復(fù)

使用道具 舉報

ID:233182 發(fā)表于 2019-4-23 03:01 | 顯示全部樓層
真的好東西啊,感謝
回復(fù)

使用道具 舉報

ID:611584 發(fā)表于 2019-9-26 11:52 來自手機(jī) | 顯示全部樓層
Thanks  for  your  share
回復(fù)

使用道具 舉報

ID:671136 發(fā)表于 2019-12-28 19:26 | 顯示全部樓層
請問如果連液晶顯示屏如何在protues上實現(xiàn)呢
回復(fù)

使用道具 舉報

ID:701861 發(fā)表于 2020-3-3 16:58 | 顯示全部樓層
謝謝
回復(fù)

使用道具 舉報

ID:375895 發(fā)表于 2020-3-5 11:13 | 顯示全部樓層
這個好,感謝分享,自己也試著做一套,這樣用來放仿真一些簡單的電路就很方便了
回復(fù)

使用道具 舉報

ID:531771 發(fā)表于 2020-3-5 17:14 | 顯示全部樓層
問一下,為什么我protues8.0打開樓主的工程文件會導(dǎo)致軟件自退啊
回復(fù)

使用道具 舉報

ID:711352 發(fā)表于 2020-3-27 09:39 | 顯示全部樓層
很不錯,感謝分享
回復(fù)

使用道具 舉報

ID:434736 發(fā)表于 2020-7-14 17:00 | 顯示全部樓層
謝謝大佬謝謝大佬謝謝大佬謝謝大佬謝謝大佬謝謝大佬謝謝大佬謝謝大佬
回復(fù)

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

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

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

快速回復(fù) 返回頂部 返回列表