按照您所说的,我这边做了如下测试:
1. 外部电路影响:
用热风枪取下除单片机意外的其他器件,外部使用线性稳压电源供电,供电瞬间问题依然存在。
2. 关于GPIO初始化代码的配置:
主程序:
- void main(void)
- {
- EAXSFR(); //ʹÄÜ·ÃÎÊXFR
- InternalXdata_Enable();
- GPIO_Init();
- USART_Init();
- // Timer0_Init(); // ÎÞ×Ô»Ù
- PWMA_Init();
- PWMB_Init();
- EA = 1;
- SystemRunState = WAIT_ARMING_CMD_STATE;
- while(1)
复制代码
GPIO初始化程序:
- void GPIO_Init(void)
- {
- GPIO_InitTypeDef GPIO_InitStructure;
-
- // P1.0,P1.2,P1.3 -> NC ÍÆÍìÊä³ö£¬ÉϵçĬÈÏÊä³öµÍµçƽ
- // P1.1 -> CTRL_ARMING ÍÆÍìÊä³ö£¬ÉϵçĬÈÏÊä³öµÍµçƽ
- // P1.4 -> CTRL_REMOTE_PWR ÍÆÍìÊä³ö£¬ÉϵçĬÈÏÊä³öµÍµçƽ
- // P1.5 -> CH_CTRL ÍÆÍìÊä³ö£¬ÉϵçĬÈÏÊä³ö¸ßµçƽ
- // P1.6 -> PROXIMITY_RX ¸¡¿ÕÊäÈë
- // P1.7 -> HEAD_SWITCH ¸¡¿ÕÊäÈë
- P1 &= 0xE0;
- P1 |= 0x20; // ÉϵçºóͨµÀ¿ª¹ØÇл»µ½½üÕ¨ÊäÈëÒý½Å
- GPIO_InitStructure.Pin = GPIO_Pin_0 | GPIO_Pin_1 | GPIO_Pin_2 | GPIO_Pin_3 | GPIO_Pin_4 | GPIO_Pin_5;
- GPIO_InitStructure.Mode = GPIO_OUT_PP;
- GPIO_Inilize(GPIO_P1,&GPIO_InitStructure);
- GPIO_InitStructure.Pin = GPIO_Pin_6 | GPIO_Pin_7;
- GPIO_InitStructure.Mode = GPIO_HighZ;
- GPIO_Inilize(GPIO_P1,&GPIO_InitStructure);
-
- // P3.0 -> CMD_RX ÉÏÀ׼˫Ïò¿Ú
- // P3.1 -> CMT_TX ÉÏÀ׼˫Ïò¿Ú
- // P3.2,P3.3£¬P3.6 -> NC ÍÆÍìÊä³ö£¬ÉϵçĬÈÏÊä³öµÍµçƽ
- // P3.4 -> CTRL_5VS2 ÍÆÍìÊä³ö£¬ÉϵçĬÈÏÊä³öµÍµçƽ
- // P3.5 -> SW_SIGNAL ¸¡¿ÕÊäÈë
- // P3.7 -> CTRL_FIRE ÍÆÍìÊä³ö£¬ÉϵçĬÈÏÊä³öµÍµçƽ
- P3 &= 0x23;
- GPIO_InitStructure.Pin = GPIO_Pin_0 | GPIO_Pin_1;
- GPIO_InitStructure.Mode = GPIO_PullUp;
- GPIO_Inilize(GPIO_P3,&GPIO_InitStructure);
- GPIO_InitStructure.Pin = GPIO_Pin_2 | GPIO_Pin_3 | GPIO_Pin_4 | GPIO_Pin_6 | GPIO_Pin_7;
- GPIO_InitStructure.Mode = GPIO_OUT_PP;
- GPIO_Inilize(GPIO_P3,&GPIO_InitStructure);
- GPIO_InitStructure.Pin = GPIO_Pin_5;
- GPIO_InitStructure.Mode = GPIO_HighZ;
- GPIO_Inilize(GPIO_P3,&GPIO_InitStructure);
-
- // P5.4 -> NC ÍÆÍìÊä³ö£¬ÉϵçĬÈÏÊä³ö¸ßµçƽ
- // P5 &= 0xEF;
- GPIO_InitStructure.Pin = GPIO_Pin_4;
- GPIO_InitStructure.Mode = GPIO_OUT_PP;
- GPIO_Inilize(GPIO_P5,&GPIO_InitStructure);
- }
复制代码
P3端口除P3.0 P3.1外,其余端口按位与0,然后设置为推挽输出模式。
|