在日常调试程序的时候遇到的问题:
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) 判断是否有实体函数去执行。
在日常调试程序的时候遇到的问题:
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) 判断是否有实体函数去执行。
举报