按照上一章建立的第一个工程模板,我们只需要在main函数里加入相关的点亮led灯的代码,并使用keil的软件仿真功能。
软件仿真在一定程度上可以在设计的初期发现程序的错误,减少我们下载到开发板的麻烦。但是纯软件的仿真的正确,也不能保证程序就正确。有时候仿真正确,实物却没这个效果。有时软件仿真结果是错误,你分析你的程序却没错误。
遇到多了,经验也就出来,前几天我仿真一个STM32的Systick ,仿真结果就不对,程序就是对的,我估计也许是软件本身的问题。
我建议用STM32+JLINK 进行仿真,有个硬件平台结果的正确性就有保证。
Main.c 函数代码:
#include "stm32f10x.h"
void delay(void)
{
int i,j;
for(i=1000;i>0;i--)
for(j=1000;j>0;j--);
}
void GPIO_Config(void)
{
GPIO_InitTypeDef GPIO_InitStructure;
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB,ENABLE);
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_5 | GPIO_Pin_6;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
GPIO_Init(GPIOB , &GPIO_InitStructure);
}
int main(void)
{
GPIO_Config();
SystemInit();
while(1)
{
GPIO_SetBits(GPIOB,GPIO_Pin_5 ); //点亮PB.5
delay();
GPIO_ResetBits(GPIOB,GPIO_Pin_5 );//熄灭PB.5
delay();
GPIO_SetBits(GPIOB,GPIO_Pin_6 );//点亮PB.6
delay();
GPIO_ResetBits(GPIOB,GPIO_Pin_6 );//熄灭PB.6
delay();
}
}
代码分析:
GPIO_InitTypeDef GPIO_InitStructure;
定义一个结构变量GPIO_InitStructure ,结构体类型为GPIO_InitTypeDef ,相当于int A ;
GPIO_InitTypeDef =int GPIO_InitStructure=A一样。
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB,ENABLE);
开启GPIOB的时钟,要使用某个管脚都需要开启该管脚的时钟
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_5 | GPIO_Pin_6;
管脚号设置为第五脚和第六脚
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_Speed_10MHz,
GPIO_Speed_2MHz,
GPIO_Speed_50MH
设置管脚电平翻转的速率,比如不要求快速变化一般10M,做串口的时候设置较高波特率的话就使用50MHZ的。
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
设置输出为推挽输出。 它有8中工作模式,输出只有两种推挽和开漏输出。其它可以参
考相关手册
GPIO_Init(GPIOB , &GPIO_InitStructure);
这一句就是将前面四句的设置初始化到GPIOB中;
SystemInit(); 将系统时钟设置为72M,不写这句,默认为8M;
GPIO_SetBits(GPIOB,GPIO_Pin_5 ); //点亮PB.5
delay();// 延时
GPIO_ResetBits(GPIOB,GPIO_Pin_5 );//熄灭PB.5
delay();
GPIO_SetBits(GPIOB,GPIO_Pin_6 );//点亮PB.6
delay();
GPIO_ResetBits(GPIOB,GPIO_Pin_6 );//熄灭PB.6
delay();
编译链接,然后开始软件仿真
软件仿真介绍:
1、编译连接好后,点击debug 进入调试界面

2、调试窗口如下

3、
图片上加文字不好弄,大概就是复位、运行、停止、单步运行等我也不太熟悉,反正用到的时候试一试就知道了。

4、选择菜单栏上的 peripherals 按钮,选择general purpose I/O 的GPIOB

5、点击左上角的运行按钮 或者按F5键 就可以看到GPIOB的5,6 在一闪一闪的

6、顺便在看看波形仿真功能
点击下图的波形分析按钮

7、、点击setup 按钮 会弹出一个窗口,在窗口的右上边,有个new的按钮,点击后
分别输入 PORTB.5 和PORTB.6

8、点击运行,将窗口调到合适的位置,最终波形图如下;

写得有些地方可能有错误,明天就要回四川了,有些急。
我想把keil工程传上来,没有看见上传文件的地方,以后把每个工程都上传上去。
2014年1月12日
题外篇:
快半个月没发表,我断断续续学到串口,滴答定时器那里了。我感觉这样不好,以后我学习一课我就发表一篇学习笔记,不要老是等学了几课后再发表前面的。
明天就回四川了,上个月六号离开四川去深圳,这个月13号又离开深圳回四川。深圳我不想多谈的城市,细数了一下,到现在为止一共去了五趟深。今年最多,三入深圳,两进手术台,倒把人生的大多事看明白了看得淡了。好多事情我都不愿去管了,越来越漠不关心了。
估计再也不会来深圳,它的繁华亦不会再与我有交集。
PS: 理论够硬,才能走得更远。有问题,私信我。