一, 打开模板文件(可以随文下载放置在文档中打开)。(如下图1所示) 图1 二,另存工程文件,添加虚拟仿真Buttons。(如下图2,3所示) 图2 图3 三,点击Source Code标签。(如下图4所示) 图4 四,编辑main.c, key.c, key.h代码。led.c, led.h代码如Proteus8.9 仿真STM32407ZGT6系列001(如下图5所示) 图5 五,Main.c 代码: #include "stm32f4xx_conf.h" #include "sys.h" #include "delay.h" #include "usart.h" #include "led.h" #include "key.h" #define Oppsit(A) (A!=0)?0:1 u8 i, k=1, t=0; u8 str[8][17]={ "红灯亮!!!...\r\n", "红亮灭!!!...\r\n", "黄灯亮!!!...\r\n", "黄亮灭!!!...\r\n", "绿灯亮!!!...\r\n", "绿亮灭!!!...\r\n", "灯闪亮!!!...\r\n", "灯闪灭!!!...\r\n", }; u8 ReadKey(u16 IoBit){ if(0==GPIO_ReadInputDataBit(GPIOC,IoBit)){ return 0; } else{ delay_us(10); if(1==GPIO_ReadInputDataBit(GPIOC,IoBit)) { return1; } else{ return0; } } } int main (void) { NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);//设置系统中断优先级分组2 delay_init(168); //初始化延时函数 uart_init(9600); //串口初始化 LED_Init(); //初始化LED端口 KEY_Init(); //按键初始化 while(1) { if(1==ReadKey(0x0020))k=0; if(1==k){ for(t=0;t<16;t++){ USART_SendData(USART1,(u16) str[6][t]); while(USART_GetFlagStatus(USART1,USART_FLAG_TC)!=SET); } for(i=0; i<6; i++){ PCout((i/2+1))=Oppsit((i%2)); for(t=0;t<16;t++){ USART_SendData(USART1,(u16) str[ i][t]); while(USART_GetFlagStatus(USART1,USART_FLAG_TC)!=SET); } delay_ms(500); } } else{ for(t=0;t<16;t++){ USART_SendData(USART1,(u16) str[7][t]); while(USART_GetFlagStatus(USART1,USART_FLAG_TC)!=SET); } while(1!=ReadKey(0x0010)); k=1; delay_ms(50); } } } key.c 代码: #include "key.h" #include "delay.h" void KEY_Init(void) { GPIO_InitTypeDef GPIO_InitStructure; RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOC,ENABLE);//使能GPIOC时钟 GPIO_InitStructure.GPIO_Pin= GPIO_Pin_4| GPIO_Pin_5; //KEY0 对应引脚 GPIO_InitStructure.GPIO_Mode= GPIO_Mode_IN;//普通输入模式 GPIO_InitStructure.GPIO_Speed= GPIO_Speed_100MHz;//100M GPIO_InitStructure.GPIO_PuPd= GPIO_PuPd_DOWN ;//下拉 GPIO_Init(GPIOC,&GPIO_InitStructure);//初始化GPIOE4 } key.h 代码: #ifndef __KEY_H #define __KEY_H #include "sys.h" #define KEY0 PCin(4) //PC4 #define KEY1 PCin(5) //PC5 void KEY_Init(void); //IO初始化 #endif 六,点击构建工程按钮,编译工程。(如下图6所示) 图6 七,点击窗口左下方仿真按钮,可见红黄绿灯每个0.5s跳闪仿真,按下KEYSTOP键,停止跳闪仿真;按下KEYSTART键,开始跳闪仿真。虚拟串口仿真将单片机红黄绿等亮灭情况打印显示。(如下图7,8,9所示) 图7 图8 图9 八,选择release,点击构建工程按钮,编译工程生成Hex文件。(如下图10所示) 图10 九,笔者准备的是普中F407ZGT6的核心板,通过普中自动下载软件将Proteus VSM Studio生成的Hex文件下载到开发板上。可见开发板连接的红黄绿灯模块每个0.5s红黄绿灯跳闪,按下7键,停止跳闪仿真;按下1键,开始跳闪仿真(模块接线定义的)。电脑串口将单片机红黄绿等亮灭情况打印显示。(如下图11,12,13,14所示) 图11 图12 图13 图14 .
附件Proteus8.9 仿真STM32407ZGT6系列基础模板t00在已安装Proteus8.9的计算机文件夹中打开即可。需要进一步了解,请加入QQ群:976235464 |