关于在keil中进行stm32软件仿真的问题

将stm32I/O引脚引脚位绑定后,然后我对PA口的8引脚不断的给高电平,延时一段后,再给低电平。程序没有错误,但进行仿真时一直GPIO口的PA8引脚却一直是高电平,不知... 将stm32I/O引脚引脚位绑定后,然后我对PA口的8引脚不断的给高电平,延时一段后,再给低电平。程序没有错误,但进行仿真时一直GPIO口的PA8引脚却一直是高电平,不知道是怎么回事?程序如下:
#include"stm32f10x_lib.h"

#define uint unsigned int

#define GPIOA_ODR_A (GPIOA_BASE+0x0C)
#define GPIOA_IDR_A (GPIOA_BASE+0x08)
#define GPIOB_ODR_B (GPIOB_BASE+0x0C)
#define GPIOB_IDR_B (GPIOB_BASE+0x08)
#define GPIOC_ODR_C (GPIOC_BASE+0x0C)
#define GPIOC_IDR_C (GPIOC_BASE+0x08)
#define GPIOD_ODR_D (GPIOD_BASE+0x0C)
#define GPIOD_IDR_D (GPIOD_BASE+0x08)
#define GPIOE_ODR_E (GPIOE_BASE+0x0C)
#define GPIOE_IDR_E (GPIOE_BASE+0x08)

#define BitBand(Addr,BitNum) *((volatile unsigned long *)((Addr&0xF0000000)+0x2000000+((Addr&0xfffff)<<5)+(BitNum<<2)))

#define PAOut(n) BitBand(GPIOA_ODR_A,n)
#define PAIn(n) BitBand(GPIOA_IDR_A,n)
#define PBOut(n) BitBand(GPIOB_ODR_B,n)
#define PBIn(n) BitBand(GPIOB_IDR_B,n)
#define PCOut(n) BitBand(GPIOC_ODR_C,n)
#define PCIn(n) BitBand(GPIOC_IDR_C,n)
#define PDOut(n) BitBand(GPIOD_ODR_D,n)
#define PDIn(n) BitBand(GPIOD_IDR_D,n)
#define PEOut(n) BitBand(GPIOE_ODR_E,n)
#define PEIn(n) BitBand(GPIOE_IDR_E,n)

void delayms(uint xms)
{
uint i,j;
for(i=xms;i>0;i--)
for(j=110;j>0;j--);
}

int main (void)
{
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA,ENABLE);
GPIOA->CRH=0x3;
while(1)
{
PAOut(8)=1;
delayms(10000);
PAOut(8)=0;
}
}
软件仿真图片如下,PA8引脚一直置1,不知是什么原因?
展开
 我来答
  • 你的回答被采纳后将获得:
  • 系统奖励15(财富值+成长值)+难题奖励30(财富值+成长值)
若以下回答无法解决问题,邀请你更新回答
意法半导体(中国)投资有限公司 2023-06-12
展开全部
意法半导体致力于引领单片机技术和产品的创新,推动生态系统的建设,为用户提供满意的产品和技术服务。意法半导体单片机产品线拥有业界宽广、极具创新力的32位产品系列 – STM32,覆盖超低功耗、超高性能方向,同时兼具很强的市场竞争力。STM32是ARM Cortex内核单片机和微处理器市场和技术方面的佼佼者,目前提供16大产品线 (F0, G0, F1, F2, F3, G4, F4, F7, H7, MP1, L0, L1, L4, L4+,L5, WB),超过1000个型号。STM32产品广泛应用于工业控制、消费电子、物联网、通讯设备、医疗服务、安防监控等应用领域,其优异的性能进一步推动了生活和产业智能…
bcg448251593
2014-10-21 · 超过25用户采纳过TA的回答
知道答主
回答量:76
采纳率:0%
帮助的人:19.8万
展开全部
根据我的经验不建议自己操作寄存器.最好用stm32的库函数进行操作!
更多追问追答
追问
问题不在于操作寄存器还是库函数,我用库函数试过也是出现这种情况。
追答
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC, ENABLE);//开GPIOC时钟
PC.GPIO_Pin = GPIO_Pin_6 | GPIO_Pin_7 | GPIO_Pin_8 | GPIO_Pin_9;
PC.GPIO_Mode = GPIO_Mode_Out_PP;
PC.GPIO_Speed = GPIO_Speed_2MHz;
GPIO_Init(GPIOC, &PC);
类似这样初始化..然后调用

GPIO_SetBits(GPIOC, GPIO_Pin_9);//GPIOC.9=1

GPIO_ResetBits(GPIOC, GPIO_Pin_9);//GPIOC.9=0
这样操作..
本回答被提问者和网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式