ประกาศใช้ GPIOA STM32F4 เป็นอินพุทหมด ตกใจพอรัน แล้วมันจะมองไม่เห็น Chip อีก

  • 0 Replies
  • 1288 Views
ประกาศใช้ GPIOA  STM32F4 เป็นอินพุทหมด ตกใจพอรัน แล้วมันจะมองไม่เห็น Chip อีก 
ใครเคยเจอปัญหานี่หรือยัง  ที่ประกาศใช้ GPIOA  STM32F4 แล้วโปรแกรมลงไป
พอจะเปลี่ยนโปรแกรมใหม่ลง  ปรากฎว่าบอดมองไม่เห็นชิป stm32f4 อีก  ใครเคยไม่เป็นไรครับ
หรือยังไม่เคย  ลองดูครับ
Code: [Select]
#include"stm32f4xx.h"

void Set_GPIO()
            {
// Set Speed GPIOD is 100Mhz
GPIOD->OSPEEDR =   0xFFFF;
   // Open clock to GPIOD
RCC->AHB1ENR    |=   (RCC_AHB1ENR_GPIOAEN|RCC_AHB1ENR_GPIODEN);
// Set GPIO  D.15,D.14,D.13,D.12 is Output
GPIOD->MODER    =    (GPIO_OSPEEDER_OSPEEDR15_0 |GPIO_OSPEEDER_OSPEEDR14_0 |
                                   GPIO_OSPEEDER_OSPEEDR13_0 |GPIO_OSPEEDER_OSPEEDR12_0);
// Set GPIOA is input
GPIOA->PUPDR    =    0;
GPIOA->MODER    =    0;
  }

int main(void)
             {

  Set_GPIO(); 
    while(1)
{
  if(GPIOA->IDR & GPIO_IDR_IDR_0)
GPIOD->ODR   =  0xF000;
if(!(GPIOA->IDR & GPIO_IDR_IDR_0))
GPIOD->ODR   =  0;
}
             }

ลองดูครับ  ว่ามีใครเกิดปัญญหาแบบนี้มั่ง
ถ้าเกิดแล้วจะทำอย่างไร

ตอนแรกก้ตกใจ ดูไปดูมา เอาวว  ไปทับขาโปรแกรม SWD เข้าแล้วทีนี้จะโปรแกรมยังไงละ
ไม่ต้องตกใจไปครับ  ใครที่ไปประกาศขาทับซ้อนกับขาโปรแกรม สามารถกู้กลับมาได้ครับ
แค่เปิดโปรแกรม ST link Utility ครับ เลือกที่เมนู Target  แล้วเลือกที่ settingครับ
จากนั้นเลือกเมนู SWD และกด OK  มันจะติดต่อกับ MCUให้ครับ จากนั้นก็ไปลบโปรแกรมเก่า
ที่คอนฟิตขาเป็นอินพุท โดยเลือกลบ เมนู Target อีกครั้ง เลือก Erase Chip เท่านี้ มันก็จะกลับมาทำงาน
ได้เหมือนเดิม เป็นการลบโปรแกรมเก่าทิ้งไปครับ
 ;D ;D