用的keil5编程,protues仿真
不清楚是代码还是仿真的问题,设置PA4读取按键输入,检测到按键按下控制PB0输出低电平使锁存器锁存,现在在仿真里按下按键后无反应

#include <stm32f10x_conf.h>
const uint8 seg_code[]={0xf9,0xa4,0xb0,0x99,0x88,0x83,0xc6,0xa1};
#define KEY PAin(4)
#define brit PBout(0)
#define KEY1_PRESS 1
void smg(void){
GPIO_InitTypeDef GPIOC_is;
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC,ENABLE);
GPIOC_is.GPIO_Pin=GPIO_Pin_All;
GPIOC_is.GPIO_Mode=GPIO_Mode_Out_PP;
GPIOC_is.GPIO_Speed=GPIO_Speed_50MHz;
GPIO_Init(GPIOC,&GPIOC_is);
}
void scq(void){
GPIO_InitTypeDef GPIOB_is;
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB,ENABLE);
GPIOB_is.GPIO_Pin=GPIO_Pin_0;
GPIOB_is.GPIO_Mode=GPIO_Mode_AF_PP;
GPIOB_is.GPIO_Speed=GPIO_Speed_50MHz;
GPIO_Init(GPIOB,&GPIOB_is);
}
void key(void){
GPIO_InitTypeDef GPIOA_is;
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA,ENABLE);
GPIOA_is.GPIO_Pin=GPIO_Pin_4;
GPIOA_is.GPIO_Mode=GPIO_Mode_IPU;
GPIOA_is.GPIO_Speed=GPIO_Speed_50MHz;
GPIO_Init(GPIOA,&GPIOA_is);
}
void GPIOSetValue(GPIO_TypeDef* GPIOx,uint16_t bitPosi, uint8_t bitVal)
{
if(bitVal)
{
GPIO_SetBits( GPIOx, bitPosi);
}
else
{
GPIO_ResetBits(GPIOx, bitPosi);
}
}
void GPIOSetMutiValue(GPIO_TypeDef* GPIOx,uint16_t GPIO_Pin_Position ,uint16_t PortVal)
{
GPIO_SetBits(GPIOx, GPIO_Pin_Position & PortVal);
GPIO_ResetBits(GPIOx, GPIO_Pin_Position &(~PortVal));
}
void ys(uint32_t t)
{
uint8 i;
while (t--)
{
for (i=0; i<200; i++) ;
}
}
uint8 Key_Scan(uint8 mode){
static u8 button;
if(mode==1){
button=1;
}
if(button==1&&KEY==0){
ys(10);
if(KEY==0){
return KEY1_PRESS;}
}else{
return 0;
}
}
void yunxing(void){
int i;u8 bn=0;
for(i=0;i<8;i++){
GPIOSetMutiValue(GPIOC,0xff,seg_code[i]);
ys(2500);
}
bn=Key_Scan(1);
if(bn!=0){
brit=!brit;
}else{
bn=0;
brit=!brit;
}
}
int main(void){
key();
smg();
scq();
//EXTIX_Init();
while(1){
yunxing();
}
}
如果代码有误希望能具体指出,顺求如何设置正常的仿真按键
按键响应的问题解决了,是protues的bug,修好了
现在就是代码还不能如预期工作,烦请帮忙指正 修改