初学,搞了几天,各种问题,最后总算成功了,总结如下:
1. PROTEUS 8.13版本的STM32有问题,退回到8.9版本的可以使用。
2. keil 5 MDK需要一些设置,不然编译一堆错误。
原理图如下:
这里还有点要说明一下,proteus默认已经给STM32接了电源了,但是要另外设置一下,点菜单栏“设计-电源配置”,把左边的VDDA加到右边+3.3V,左边的VSSA加到右边GND
代码如下:- #include <stm32f10x.h>
- //延时
- void delayms(u16 n)
- {
- u16 i;
- for(;n>0;n--)
- {
- for(i=0;i<500;i++){;}
- }
- }
- int main(void)
- {
- u8 i;
- RCC->APB2ENR |= 1<<2; //使能GPIO Port A
- GPIOA->CRL &= 0x00000000; //GPIOA初始化
- GPIOA->CRL |= 0x33333333; //GPIOA设置为输出模式,50MHz,通用推挽
- GPIOA->ODR |= 0xFF; //GPIOA低8位设置为1
- while(1)
- {
- for(i=0;i<8;i++)
- {
- GPIOA->ODR &= ~(1<<i); //PA的第i位清0,LED亮
- delayms(1000);
- GPIOA->ODR |= 0xFF; //灯全灭
- }
- }
- }
复制代码 我用的是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安装路径里搜,然后把路径添加进去。
当然,使用库函数,还有其他更方便的方法,可以自行网上搜索
|