一、安装MDK5及其环境的搭建
1.安装MDK5软件
(1)打开软件安装包,用管理员身份运行mdk_510.exe
(2)选择软件路径及支持包路径
(3)随便填写注册信息
(4)开始安装
(4)过程中会弹出以下窗口,点击安装
(5)安装完成,点击“Finish”
2.安装支持包
下面以支持包Keil.STM32F1xx_DFP.1.0.4.pack为例,说明支持包安装步骤。
(1)双击Keil.STM32F1xx_DFP.1.0.4.pack
(2)选择包的安装路径
(3)安装成功
二、一个stm32的简单程序的编译
(1)点击project->new uVision project
(2)输入项目名称
(3)选择一个芯片,这里我选择了STM32F103C8
(4)搭建环境
(5)新建一个main.c文件,并添加进项目
具体代码如下
#include "stm32f10x.h"
#include "stm32f10x_gpio.h"
#include "stm32f10x_rcc.h"
#define CLOCK 72/8
//时钟配置,后续再详细捋时钟这块的东西,现在姑且按照这样设置这者
void RCC_Configuration(void)
{
ErrorStatus HSEStartUpStatus;
//将RCC寄存器设置为默认值
RCC_DeInit();
//打开外部高速时钟
RCC_HSEConfig(RCC_HSE_ON);
//等待外部高速时钟晶振起振
HSEStartUpStatus = RCC_WaitForHSEStartUp();
if(HSEStartUpStatus == SUCCESS){
//设置PLL时钟时钟源及倍频系数
RCC_PLLConfig(RCC_PLLSource_HSE_Div1, RCC_PLLMul_16);
//设置AHB时钟
RCC_HCLKConfig(RCC_SYSCLK_Div1);
//设置APB1低速时钟
RCC_PCLK1Config(RCC_HCLK_Div2);
//设置APB2高速时钟
RCC_PCLK2Config(RCC_HCLK_Div1);
//使能PLL
RCC_PLLCmd(ENABLE);
//等待PLL工作
while(RCC_GetFlagStatus(RCC_FLAG_PLLRDY) == RESET)
{
}
//设置系统时钟为PLL时钟
RCC_SYSCLKConfig(RCC_SYSCLKSource_PLLCLK);
//等待系统时钟切换为PLL时钟
while(RCC_GetSYSCLKSource() != 0x08)
{
}
}
//打开需要使用的外设的时钟
RCC_APB2PeriphClockCmd(RCC_APB2Periph_USART1 | RCC_APB2Periph_GPIOA | RCC_APB2Periph_GPIOB |
RCC_APB2Periph_GPIOC | RCC_APB2Periph_GPIOD | RCC_APB2Periph_GPIOE, ENABLE);
RCC_APB1PeriphClockCmd(RCC_APB1Periph_USART2, ENABLE);
RCC_APB1PeriphClockCmd(RCC_APB1Periph_USART3, ENABLE);
RCC_APB2PeriphClockCmd(RCC_APB2Periph_SPI1, ENABLE);
RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO, ENABLE);
}
//延时微妙
void delay_us(unsigned int us)
{
u8 n;
while(us--)for(n=0;n<CLOCK;n++);
}
int main(){
RCC_Configuration();
//设置GPIOB12 为推挽输出模式,速度为2MHz
GPIO_InitTypeDef gpioInit;
gpioInit.GPIO_Mode=GPIO_Mode_Out_PP;
gpioInit.GPIO_Pin=GPIO_Pin_12;
gpioInit.GPIO_Speed=GPIO_Speed_2MHz;
GPIO_Init(GPIOB,&gpioInit);
while(1){
//点亮LED
GPIO_ResetBits(GPIOB,GPIO_Pin_12);
//延时500ms
delay_us(500000);
//关闭LED
GPIO_SetBits(GPIOB,GPIO_Pin_12);
//延时500ms
delay_us(500000);
}
}
(6)点击编译,编译成功,但发现有一处警告
可以用如下方法解决,如果还是不行就点击查看解决方法
将光标移到提示告警的代码最后一行(有代码的那一行)然后按住del键,直到确定下面没有回车行,最后回车一下或多下即可。
三、Proteus 电路仿真
(1)新建一个闪烁的LED工程,main.c代码如下
#include <reg51.h>
#include <intrins.h>
#define uchar unsigned char
#define uint unsigned int
void DelayMS(uint x)
{
uchar i;
while(x--)
{
for(i=120;i>0;i--);
}
}
void main()
{
P0 = 0xFE;
while(1)
{
P0 = _crol_(P0,1);
DelayMS(150);
}
}
(2)生成.hex文件
(3)电路图连接如下
(4)导入对应的.hex文件
(3)点击运行,LED灯开始闪烁
四、参考资料
1.STM32F103+RTT从零开始(一)——点亮LED
2.STM32底座实验指导书