Proteus 8.8支持KAIL编译器。用Proteus 8.8绑架KAIL就免除KAIL配置编程环境的步骤,可直接在Proteus代码窗口写程序。
如下图:
此图是调试Debug模式,要生成Hex文件可在页面工具栏下拉框中选择Release发布模式。
程序代码:
/* 由新项目向导生成的空白Main.c 文件后向其中添加代码
*
* 创建: 2020年2月20日
* 处理器:STM32F103T6
* 编译器: Proteus 8 .8绑架Keil for ARM(Keil uVision5)
*/
#include <stm32f103x6.h>
#include <stdint.h>
void delay(unsigned int a)
{
while(a--);
}
//(1)打开这些GPIO口所对应端口的时钟;
//(2)配置PB5,PB0,PB1这三个GPIO口的工作模式;
//(3)令PB5,PB0,PB1这三个GPIO口输出高低电平以熄灭或点亮对应的LED发光管。
//因此我们第一步首先要把GPIOB端口的时钟使能。
//通过查找微控制器参考手册。找到和GPIOB端口相关的寄存器RCC_APB2ENR,
//通过查找我们发现,这个寄存器中的第三位为GPIOB端口的使能位
int main (void)
{
//(1)那么我们想使用这个端口的三个引脚PB5,PB0,PB1,就先要把端口B的时钟打开。
RCC->APB2ENR |= (1<<3); //GPIOB端口时钟使能
//(2)由于这三个引脚是用来点亮LED发光管的,因此要设置成推挽输出的模式;同时将其输出的最大频率设置为50MHz。
//GPIOx_CRL这个寄存器管的是0~7这低八个引脚的配置,而GPIOx_CRH这个寄存器管的是8~15这个高八个引脚的配置
//我们分别对GPIOB_CRL的0~3位(PB0)、4~7位(PB1)、20~23位(PB5)进行配置
//初始化PB0 PB1 PB5为推挽输出,输出频率最大为50MHz
//先清零,再赋值。以下三行为将对应位清零操作
GPIOB->CRL &= ~( 0x0F<< (4*0));
GPIOB->CRL &= ~( 0x0F<< (4*1));
GPIOB->CRL &= ~( 0x0F<< (4*5));
//以下三行分别将PB0 PB1 PB5,设置为推挽输出50MHz
GPIOB->CRL |= (3<<4*0);
GPIOB->CRL |= (3<<4*1);
GPIOB->CRL |= (3<<4*5);
//(3)让PB5,PB0,PB1这三个引脚输出一个低电平信号
//GPIOB_ODR的用法:将对应的位写0,其对应的管脚输出低电平信号。反之,输出高电平信号。
while(1)
{
GPIOB->ODR &= ~(1<<5); //PB5输出低电平,点亮LED
delay(0xfffff);
GPIOB->ODR |= (1<<5); //PB5输出高电平,熄灭LED
GPIOB->ODR &= ~(1<<0); //PB0输出低电平,点亮LED
delay(0xfffff);
GPIOB->ODR |= (1<<0); //PB0输出高电平,熄灭LED
GPIOB->ODR &= ~(1<<1); //PB1输出低电平,点亮LED
delay(0xfffff);
GPIOB->ODR |= (1<<1); //令PB1输出高电平,熄灭LED
}
}
工程文件见压缩包:
stm32.zip
(510.15 KB, 下载次数: 80)
|