单片机学习小组
直播中

nhcp

15年用户 1137经验值
私信 关注

stm32对GPIO口操作后寄存器复位出不来是为什么?

stm3对GPIO口操作后返回2出不来是为什么?

回帖(1)

张建国

2022-1-21 11:28:19
  在日常调试程序的时候遇到的问题:
  1.
  执行结束处理之后的外部初始化初始化时会进入;查原因发现终端函数没有写循环;导致进入中断标志没有清除,出不来。
  2. IO 口后,所有的一切都拉到了前面;
  由于 pD9 是电源控制口,所以当我拉高的时候,stm32 外接的芯片会产生外部输入模式,在这个 pD8 脚下会形成输入模式,用于外部异常;以及外部中断处理函数添加;
  现象:拉高pD9 ,GPIOX_CRH=GPIOX_CRL=0x44444444; 然后查看rcc附加,发现apb2下面的所有io口的时钟都重复了,rcc_apb2rstr再回到0;所以判断函数都没有
  调用函数的初始值;里面没有实体,里面没有实体,就是NULL;
  于是在程序里面添加判断if(函数指针),如下:
  static (*pCallBackService)( void );
  void *****Isr( void )
  {
  /*调用过程*/
  if(pCallBackService)
  pCallBackService();
  }
  int pIntInit( void (*pIsr)( void ) )
  {
  RfBspCallBackService = pIsr;
  返回0;
  }
  其中:
  if(pCallBackService) 判断是否有实体函数去执行。
举报

更多回帖

发帖
×
20
完善资料,
赚取积分