图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]={ "红灯亮!!!...rn",
"红亮灭!!!...rn",
"黄灯亮!!!...rn",
"黄亮灭!!!...rn",
"绿灯亮!!!...rn",
"绿亮灭!!!...rn",
"灯闪亮!!!...rn",
"灯闪灭!!!...rn",
};
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