找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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安装路径里搜,然后把路径添加进去。

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

评分

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

查看全部评分

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

使用道具 举报

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

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

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