单片机论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 14617|回复: 43
打印 上一主题 下一主题
收起左侧

全球首发 全世界第一个protues 仿真stm32 f103 实现spi

  [复制链接]
跳转到指定楼层
楼主
happy87 发表于 2017-9-4 17:55 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
全球首发 全世界第一个protues 仿真stm32 f103 实现spi
仿真原理图如下(proteus仿真工程文件可到本帖附件中下载)



stm32单片机源程序如下:
  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();//使能外设时钟
  21.         //GPIO_Configuration();
  22.         SEG_Init();
  23.         SPI1_Init();       
  24.         //SPI1_SetSpeed(SPI_BaudRatePrescaler_256);       
  25.        
  26.         //========实现数码管显示==========
  27.           while (1)
  28.           {
  29.                        
  30.                        

  31. SEG_Display(8830,0);
  32.                        
  33.                        
  34.                 /*for(i=0;i<9999;i++)
  35.                 {
  36.                         for(j=0;j<500;j++)
  37.                                 SEG_Display(i,0);
  38.                 }        */          
  39.                 //SEG_Display(1234,3);
  40.           }
  41. }

  42. /*******************************************************************************
  43. * Function Name  : Delay_Ms
  44. * Description    : delay 1 ms.
  45. * Input          : time (ms)
  46. * Output         : None
  47. * Return         : None
  48. *******************************************************************************/
  49. void Delay_Ms(u16 time)  //延时函数
  50. {
  51.         u16 i,j;
  52.         for(i=0;i<time;i++)
  53.                   for(j=1000;j>0;j--);
  54. }

  55. /*******************************************************************************
  56. * Function Name  : RCC_Configuration
  57. * Description    : Configures the different system clocks.
  58. * Input          : None
  59. * Output         : None
  60. * Return         : None
  61. *******************************************************************************/
  62. void RCC_Configuration(void)
  63. {
  64.         //==========================使用外部RC晶振========================================
  65.           RCC_DeInit();                                //初始化为缺省状态
  66.         //RCC_HSICmd(ENABLE);
  67.           RCC_HSEConfig(RCC_HSE_ON);  //高速时钟使能
  68.           while (RCC_GetFlagStatus(RCC_FLAG_HSERDY) == RESET);  //等待高速时钟使能就绪

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

  77.     RCC_SYSCLKConfig(RCC_SYSCLKSource_PLLCLK);                                  // Select PLL as system clock source
  78.     while(RCC_GetSYSCLKSource() != 0x08);                                        // Wait till PLL is used as system clock source
  79.        
  80.        
  81.                 RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA , ENABLE);        // 使能APB2外设GPIOA时钟
  82.         RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB , ENABLE);        // 使能APB2外设GPIOB时钟
  83.         RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC , ENABLE);        // 使能APB2外设GPIOC时钟
  84.         RCC_APB2PeriphClockCmd(RCC_APB2Periph_SPI1 , ENABLE);        // 使能APB2外设SPI1时钟
  85. }
复制代码

所有资料51hei提供下载:
protues stm32 f103 实现spi.rar (1.56 MB, 下载次数: 534)




评分

参与人数 1黑币 +100 收起 理由
admin + 100 共享资料的黑币奖励!

查看全部评分

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏6 转播转播 分享分享 分享淘帖 顶1 踩
回复

使用道具 举报

沙发
timo的小蘑菇 发表于 2017-9-27 09:16 来自手机 | 只看该作者
你是哪个版本的protues呢
回复

使用道具 举报

板凳
 楼主| happy87 发表于 2017-10-13 20:20 | 只看该作者
8.6 支持stm32
回复

使用道具 举报

地板
qmh48696705 发表于 2017-10-16 18:13 | 只看该作者

学习下,初学不知道怎么入手
回复

使用道具 举报

5#
tonyinspira 发表于 2018-3-13 08:42 | 只看该作者
请问大神们知道如何设置定时器吗?为什么程序在硬件上没有问题,但是在PROTUES上就不能正常跑。
回复

使用道具 举报

6#
tonyinspira 发表于 2018-3-13 08:43 | 只看该作者
硬件上没有问题,Protues上却不能运行。
回复

使用道具 举报

7#
avery423 发表于 2018-4-22 12:45 | 只看该作者
建议仿真成功的整理一下。这里面还有些疑问:
1,hex文件是用什么软件生成的,如果是keil,哪个版本?高版本的keil,元件库好你要单独下的,这个器件怎么下?
2,仿真程序里很多STM32的头文件,库文件,是元件包里自带吗》?
回复

使用道具 举报

8#
dengyifenzhong 发表于 2018-4-23 09:46 | 只看该作者
收藏了,但是打开运行,好多问题呢,不知道怎么回事
回复

使用道具 举报

9#
 楼主| happy87 发表于 2018-4-23 20:17 | 只看该作者
回复楼上的问题:
1.stm32仿真不能用keil 4版本,必须用5版本以上,至于包怎么下这是基本操作
2.上传时所用文件都上传,只会多不会少,但是版主会为了减轻服务器压力,做一些删减
。你们到手的文件,我不知道
3.仿真用的stm32的spi模块,不是模拟spi,因此难度很大,为了体现效果放慢了速度。
4.我用的3.5的库无法仿真中断 和 I2C 这个是protues的自己的问题,但是能不能用hal库仿真,或者更专业的gcc编译器,我不清楚,个人能力精力有限,protues无法仿真中断是历史遗留问题,例如arm7用iar会出现bug,但在ADS下却可以仿真
5.上传程序本身是想抛砖引玉,希望更多的高手参与,来解决I2C中断,甚至更难的问题
回复

使用道具 举报

10#
dengyifenzhong 发表于 2018-4-25 11:12 | 只看该作者
@楼主,但是打开程序直接不能运行,我简单写了一个led控制灯,也不行,不知道怎么回事,最后我直接led加电源,一端加地,运行,还是不行,不知道是不是我protue有问题吗
回复

使用道具 举报

11#
 楼主| happy87 发表于 2018-4-29 19:33 | 只看该作者
dengyifenzhong 发表于 2018-4-25 11:12
@楼主,但是打开程序直接不能运行,我简单写了一个led控制灯,也不行,不知道怎么回事,最后我直接led加电 ...

protues自带的例子行则行,使用前加载一下hex
回复

使用道具 举报

12#
失心恋2015 发表于 2018-4-30 15:27 | 只看该作者
这是protues哪个版本?
回复

使用道具 举报

13#
 楼主| happy87 发表于 2018-5-6 17:13 | 只看该作者
失心恋2015 发表于 2018-4-30 15:27
这是protues哪个版本?

8.6 以上都行
回复

使用道具 举报

14#
lawrence2018 发表于 2018-5-27 19:29 | 只看该作者
好东西啊
回复

使用道具 举报

15#
见龙在田 发表于 2018-6-14 09:09 | 只看该作者
感谢分享,先拿来试试
回复

使用道具 举报

16#
pengyongnet 发表于 2018-6-30 08:43 | 只看该作者
谢谢分享,学习了,感谢了
回复

使用道具 举报

17#
pengyongnet 发表于 2018-6-30 08:44 | 只看该作者
感谢楼主的分享,开始学习下
回复

使用道具 举报

18#
pengyongnet 发表于 2018-6-30 08:45 | 只看该作者
感谢楼主分享,有空的时候,不懂请教下你
回复

使用道具 举报

19#
蜘、蛛。 发表于 2018-8-6 14:20 | 只看该作者
遇到了些问题,提示电源没有配置
回复

使用道具 举报

20#
 楼主| happy87 发表于 2018-8-13 10:22 | 只看该作者
tonyinspira 发表于 2018-3-13 08:42
请问大神们知道如何设置定时器吗?为什么程序在硬件上没有问题,但是在PROTUES上就不能正常跑。

定时器的仿真我已经解决,但是是proteus自带的gcc for arm编译器,目前无法用keil
有一个bug,就是如果使用tm3或者tm2必须同时开启tm1中断,
以后会上传
回复

使用道具 举报

21#
oliverlau2k11 发表于 2018-8-13 20:58 | 只看该作者
很棒的资料,已使用,谢谢
回复

使用道具 举报

22#
dbxzjq 发表于 2018-8-25 19:33 | 只看该作者
感谢分享,等了许久的STM32仿真了
回复

使用道具 举报

23#
ytouc317 发表于 2018-8-30 06:58 | 只看该作者
学习一些,加油
回复

使用道具 举报

24#
bennyox 发表于 2018-9-5 11:19 | 只看该作者
感谢楼主,下了试试看。
回复

使用道具 举报

25#
wangXJ 发表于 2018-9-22 09:32 | 只看该作者
CM3.DLL failed to create DSIM model for primitive type 'CM3_CORE'. [U1_CM3CORE]

提示出现这样的错误。是什么情况?
回复

使用道具 举报

26#
goxp49 发表于 2018-10-29 16:52 | 只看该作者


学习下,初学不知道怎么入手
回复

使用道具 举报

27#
onepcb 发表于 2018-11-1 21:45 | 只看该作者
谢谢分享!,,,,
回复

使用道具 举报

28#
onepcb 发表于 2018-11-1 21:45 | 只看该作者
谢谢分享!,,,,
回复

使用道具 举报

29#
51hxgdd 发表于 2018-11-2 19:22 | 只看该作者
谢谢楼主
回复

使用道具 举报

30#
525215455 发表于 2018-11-24 12:37 | 只看该作者
谢谢分享!,,,,
回复

使用道具 举报

31#
瓶子 发表于 2018-11-27 19:45 | 只看该作者
学习下,开发板不方便,proteus方便点
回复

使用道具 举报

32#
hujj 发表于 2018-11-28 10:55 | 只看该作者
我以为是下载proteus呢
回复

使用道具 举报

33#
hujj 发表于 2018-11-28 10:57 | 只看该作者
我还以为是下载proteus呢。
回复

使用道具 举报

34#
grodd 发表于 2018-12-10 18:24 | 只看该作者
谢谢分享!!!
回复

使用道具 举报

35#
下一秒 发表于 2018-12-20 11:13 | 只看该作者
刚解决定时器的问题 现在打开DAC定时器也不工作了 不知道打开AD会不会也有问题
回复

使用道具 举报

36#
我就要飞刀 发表于 2019-2-10 09:33 | 只看该作者
Vsm调试器
发生关键仿真错误。
我用的是Proteus 8.6
回复

使用道具 举报

37#
liwjee 发表于 2019-2-26 11:18 | 只看该作者
过来看看学习学习
回复

使用道具 举报

38#
xqtop 发表于 2019-3-2 21:42 | 只看该作者

感谢分享
回复

使用道具 举报

39#
liuyw001 发表于 2019-3-29 14:40 | 只看该作者
多谢分享
回复

使用道具 举报

40#
z1161948857 发表于 2019-4-16 14:42 | 只看该作者
问下楼主编程用的keil的哪个版本?
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|手机版|小黑屋|单片机论坛 |51Hei单片机16群 联系QQ:125739409;技术交流QQ群7344883

Powered by 单片机教程网

快速回复 返回顶部 返回列表