标题: Proteus仿真STM32单片机跑马灯 [打印本页]

作者: sttt300    时间: 2023-7-11 09:51
标题: Proteus仿真STM32单片机跑马灯
初学,搞了几天,各种问题,最后总算成功了,总结如下:
1. PROTEUS 8.13版本的STM32有问题,退回到8.9版本的可以使用。
2. keil 5 MDK需要一些设置,不然编译一堆错误。
原理图如下:

这里还有点要说明一下,proteus默认已经给STM32接了电源了,但是要另外设置一下,点菜单栏“设计-电源配置”,把左边的VDDA加到右边+3.3V,左边的VSSA加到右边GND


代码如下:
  1. #include <stm32f10x.h>

  2. //延时
  3. void delayms(u16 n)
  4. {
  5.                 u16 i;
  6.                 for(;n>0;n--)
  7.                 {
  8.                         for(i=0;i<500;i++){;}
  9.                 }
  10. }

  11. int main(void)
  12. {
  13.                 u8 i;
  14.                 RCC->APB2ENR |= 1<<2;                        //使能GPIO Port A
  15.                 GPIOA->CRL &= 0x00000000;        //GPIOA初始化
  16.                 GPIOA->CRL |= 0x33333333;        //GPIOA设置为输出模式,50MHz,通用推挽
  17.                 GPIOA->ODR |= 0xFF;        //GPIOA低8位设置为1
  18.                 while(1)
  19.                 {
  20.                         for(i=0;i<8;i++)
  21.                         {
  22.                                 GPIOA->ODR &= ~(1<<i);                //PA的第i位清0,LED亮
  23.                                 delayms(1000);
  24.                                 GPIOA->ODR |= 0xFF;        //灯全灭
  25.                         }
  26.                 }
  27. }
复制代码
我用的是keil MDK 5.25版本,新建工程,Run-time Environment设置中,如下图,第1,2项必选,第3项看需求来选。
比如,我上面的代码是没有用到库函数的,所以第3项就不用了。
如果是用库函数做的跑马灯代码,那第3项要把GPIO和RCC勾上。


不用库函数的代码,到此就差不多完成了,设置一下输出hex文件,编译通过,就可以放proteus去仿真了
用到库函数的,还需要在“options for target”中设置,如下图,需要在1处写上“USE_STDPERIPH_DRIVER”,在2处点后面的...,选择头文件路径
看报错中提示什么头文件,就在keil安装路径里搜,然后把路径添加进去。

当然,使用库函数,还有其他更方便的方法,可以自行网上搜索






欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1