各大免费推广网站,linux wordpress路径,免费找客户的网站,软件开发工具03173proteus是可以直接创建设计图和源码的#xff0c;但是源码编译它需要借助keil-arm编译器#xff0c;也就是我们安装keil-mdk之后自带的编译器。 下面给出一个完整的示例#xff0c;主要是做一个LED灯闪烁的效果。 新建工程指定路径#xff0c;Schematic,PCB layout都选择默… proteus是可以直接创建设计图和源码的但是源码编译它需要借助keil-arm编译器也就是我们安装keil-mdk之后自带的编译器。 下面给出一个完整的示例主要是做一个LED灯闪烁的效果。 新建工程指定路径Schematic,PCB layout都选择默认在最后创建项目工程向导的时候选择Create Firmware Project 硬件系列选择Cortex-M3控制器类型选择STM32F103C6(其他类型可能不会出现Compiler下拉选项)编译器类型如果没有选择项点击后面的Compilers按钮在弹出框中选择Keil for ARM指定keil-mdk安装的ARM路径 这样生成的项目自带源码源码结构如下所示 这个源码还自带了标准库中的很多东西启动文件核心文件所以直接编译也是没有问题的。 这里虽然有了标准库中的很多内容但是一些初始化的功能代码并不在这里所以需要通过操作寄存器来实现点灯操作。 如下所示是一个简单的 通过操作寄存器来让GPIOA的GPIO_Pin_5端口作为电平输出口并开启时钟使能的代码。
#include stm32f103x6.h
#include stm32f1xx.h #define BITBAND(addr, bitnum) ((addr 0xF0000000)0x2000000((addr 0xFFFFF)5)(bitnum2))
#define MEM_ADDR(addr) *((volatile unsigned long *)(addr))
#define BIT_ADDR(addr, bitnum) MEM_ADDR(BITBAND(addr, bitnum)) #define GPIOA_ODR_Addr (GPIOA_BASE12) //0x4001080C
#define PAout(n) BIT_ADDR(GPIOA_ODR_Addr,n)#define LED0 PAout(5) // PA5 void Delay_nms(unsigned int time)
{ unsigned int i0; while(time--){i12000; while(i--) ; }
}void LED_Init(void)
{ RCC-APB2ENR | RCC_APB2ENR_IOPAEN; // clock enableGPIOA-CRL 0XFF0FFFFF; //PA5GPIOA-CRL | 0X00300000; //PA5 GPIOA-ODR | 15; //PA5
}int main (void)
{ LED_Init(); while (1){LED0 0;Delay_nms(50); LED0 1;Delay_nms(50); }
} 项目源码构建成功 接着我们直接在原理图Schematic这里添加发光二极管和电阻并连线就可以开始仿真了。 前面源码构建好了这里原理图简单添加了LED就可以进行仿真了。效果如下所示 这种构建仿真原理图加源码的方式很适合没有单片机而且不用在Keil和Proteus之间来回切换的情况但是它的源码是在临时文件夹中如下所示 这种方式对于复杂项目而言可能也有一些弊端。