ARM开发环境入门

    科技2025-02-25  13

    stm32的编译与c51程序设计和仿真

    一、stm32的程序设计二、使用Proteus仿真三、c51程序设计及仿真

    一、stm32的程序设计

    1.准备工作 首先,点击project->new project,输入工程名后即将创建STM32F103VE。 2.右键 Target1-> Manage Project Items。将Target1名字修改为temp,然后在Groups一栏删掉 Source Group1,建立 USER、CMSIS、FWLIB、STARTUP等分组。 3.编程 点击进入"main.c"函数,点击编译(shift+F7)后能够正常运行。 注:51单片机开头的#include "reg51.h"不同,STM32的头文件是#include “stm32f10x.h” 其次,我们如果想要让LED灯亮的话,首先就要先找到LED灯所相对应的GPIO 关于GPIO的配置有八种: (1)GPIO_Mode_AIN 模拟输入 (2)GPIO_Mode_IN_FLOATING 浮空输入 (3)GPIO_Mode_IPD 下拉输入 (4)GPIO_Mode_IPU 上拉输入 (5)GPIO_Mode_Out_OD 开漏输出 (6)GPIO_Mode_Out_PP 推挽输出 (7)GPIO_Mode_AF_OD 复用开漏输出 (8)GPIO_Mode_AF_PP 复用推挽输出 GPIO_Speed_10MHz 最高输出速率10MHz GPIO_Speed_2MHz 最高输出速率2MHz GPIO_Speed_50MHz 最高输出速率50MHz 其中最常用的是推挽输出,推挽输出:可以输出高,低电平,连接数字器件。推挽输出与开漏输出是有区别的。开漏输出:输出端相当于三极管的集电极. 要得到高电平状态需要上拉电阻才行. 适合于做电流型的驱动,其吸收电流的能力相对强(一般20ma)。这里简单说:开漏是0的时候接GND 1的时候浮空 推挽是0的时候接GND 1的时候接VCC 在配置IO口时必须要使IO口的时钟使能RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB,ENABLE); 附上main的代码:

    /************************** * 本代码实现效果: * led1灯(绿色)间歇性闪烁 **************************/ #include "stm32f10x.h" void Delay_ms( uint16_t time_ms ); int main() { //开启时钟 RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB,ENABLE); GPIO_InitTypeDef GPIO_InitStructure; GPIO_InitStructure.GPIO_Pin = GPIO_Pin_1; GPIO_InitStructure.GPIO_Mode=GPIO_Mode_Out_PP; GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; GPIO_Init(GPIOB,&GPIO_InitStructure); while(1) { GPIO_WriteBit(GPIOB,GPIO_Pin_1,Bit_SET); Delay_ms(500); GPIO_WriteBit(GPIOB,GPIO_Pin_1,Bit_RESET); Delay_ms(500); } } void Delay_ms( uint16_t time_ms ) { uint16_t i,j; for( i=0;i<time_ms;i++ ) { for( j=0;j<10309;j++ );//´óÔ¼1ms } }

    二、使用Proteus仿真

    1.创立一个工程文件,找到此仿真所需要用的器件,连接图如下。 2.双击 STM32F103R6 芯片,链接 MDK 生成的 .hex 文件: 3.仿真结果如下:

    三、c51程序设计及仿真

    1.Keil创建项目编写代码 选择设备AT89C51勾选输出HEX 附源代码:

    // #include<reg52.h> sbit LED1=P1^0; void main() { LED1=0; while(1){}; }

    2.打开Proteus新建项目 2.1选择AT89C51 2.2双击AT89C51 载入HEX然后点击运行点亮黄灯 总结:此次实验让我初步熟悉了在mdk的环境下使用stm32编程的流程与基本操作。也与c51编程产生了对比。

    Processed: 0.015, SQL: 8