|
楼主 |
发表于 2019-12-18 12:55:22
|
显示全部楼层
1、第一个测试:大幅精简main其他语句,如下:
int main( void )
{
SystemCoreClockUpdate();
//初始化外部GPIO P03为输出、上拉、开漏,P03端口外接LED3
Gpio_InitIOExt( 0, 3, GpioDirOut, TRUE, FALSE, TRUE, FALSE );
//配置P33(SW2)为中断输入端口,下降沿触发
//初始化外部IO P33
Gpio_InitIOExt( 3, 3, GpioDirIn, TRUE, FALSE, FALSE, 0 );
//开启GPIO中断
Gpio_ClearIrq( 3, 3 ); //Port3, Pin3
Gpio_EnableIrq( 3, 3, GpioIrqFalling ); //配置P33为下降沿中断,外部初始化为上拉
EnableNvic( PORT3_IRQn, DDL_IRQ_LEVEL_DEFAULT, TRUE ); //< 使能端口P33系统中断
while(1);
}
测试结果:同样故障。
2、第二个测试,初始化放在线程中实现。
__NO_RETURN void worker1( void *argument )
{
( void )argument;
//初始化外部GPIO P03为输出、上拉、开漏,P03端口外接LED3
Gpio_InitIOExt( 0, 3, GpioDirOut, TRUE, FALSE, TRUE, FALSE );
//配置P33(SW2)为中断输入端口,下降沿触发
//初始化外部IO P33
Gpio_InitIOExt( 3, 3, GpioDirIn, TRUE, FALSE, FALSE, 0 );
//开启GPIO中断
Gpio_ClearIrq( 3, 3 ); //Port3, Pin3
Gpio_EnableIrq( 3, 3, GpioIrqFalling ); //配置P33为下降沿中断,外部初始化为上拉
EnableNvic( PORT3_IRQn, DDL_IRQ_LEVEL_DEFAULT, TRUE ); //< 使能端口P33系统中断
while( 1 )
{
osDelay( 1000U ); // block mutex for 1s
}
}
int main( void )
{
SystemCoreClockUpdate();
osKernelInitialize();
osThreadNew( worker1, NULL, &worker_attr_1 );
osThreadNew( worker2, NULL, &worker_attr_2 );
osThreadNew( worker3, NULL, &worker_attr_3 );
osKernelStart();
for( ;; ) {}
}
测试结果:同样故障。 |
|