STM32简单程序的编译及Proteus 电路仿真软件C51程序的设计与仿真

一、安装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底座实验指导书

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值