วันศุกร์ที่ 3 พฤษภาคม พ.ศ. 2556

ใช้งาน GPIO STM32F10x

สำหรับการใช้งาน GPIO ของ STM32F1 โดยใช้เป็น Digital out put มีขั้นตอนดังนี้
  • ประกาศ GPIO_InitTypeDef ซึ่งจะใช้เก็บค่าในการกำหนด GPIO 
  • เปิดใช้งาน clock ของ GPIO
  • กำหนดค่า Port




สำหรับ GPIO สามารถเลื่อกโหมดได้ดังนี้
  • GPIO_Mode_AIN กำหนดให้เป็นอนาล็อกอินพุต
  • GPIO_Mode_IN_FLOATING กำหนดให้เป็นขาดิจิตอลอินพุตแบบลอยขา
  • GPIO_Mode_IPD กำหนดให้เป็นดิจิตอลอินพุตแบบพูลดาวน์
  • GPIO_Mode_IPU กำหนดให้เป็นดิจิตอลอินพุตแบบพูลอัพ
  • GPIO_Mode_Out_OD กำหนดให้เป็นดิจิตอลเอาท์พุตแบบ open-drain
  • GPIO_Mode_Out_PP กำหนดให้เป็นดิจิตอลเอาท์พุตแบบ push-pull
  • GPIO_Mode_AF_OD กำหนดให้เป็นขาฟังก์ชันพิเศษแบบ open-drain
  • GPIO_Mode_AF_PP กำหนดให้เป็นขาฟังก์ชันพิเศษแบบ push-pull
และตัวแปรอื่นสามารถกำหนดได้ตามภาพข้างล่าง





วันอังคารที่ 9 เมษายน พ.ศ. 2556

STM32F3xx GPIO

สวัสดีครับบทความนี้จะเป์นการใช้งาน GPIO ของ stm32f3xx

  • 1.ประกาศ structure GPIO ชื่อ GPIO_InitStructure ดังนี้
     GPIO_InitTypeDef       GPIO_InitStructure;
  • 2.เปิดใช้งาน clock ของ GPIO port E โดยใช้คำสั่ง RCC_AHBPeriphClockCmd ดั้งนี้
     RCC_AHBPeriphClockCmd(RCC_AHBPeriph_GPIOE, ENABLE);

  • 3.กำหนดค่าการทำงานของ GPIO ตัวอย่างจะใช้ pin 0 กับ 1 ดังนี้
      GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0 | GPIO_Pin_1; // เลือก pin
      GPIO_InitStructure.GPIO_Mode = GPIO_Mode_OUT;           // เลือก mode เป็น digital out put
      GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;           // เลือกวงจรขับแบบ Push-pull
      GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_NOPULL;    // ไม่ต่อ R pull up และ pull down
      GPIO_Init(GPIOE, &GPIO_InitStructure);                               // กำหนดค่าลง port E

ตอนนี้ port E pin 0 กับ pin 1 จะเป็น digital out put และมีคำสั่งในการควบคุมต่างๆ ดังต่อไปนี้

GPIO_SetBits( GPIOz, GPIO_Pin_x);
GPIO_ResetBits(GPIOz, GPIO_Pin_x);
GPIO_WriteBit(GPIOz, GPIO_Pin_x, BITVALUE);
GPIO_Write(GPIOz, PORTVALUE);

*z แทนชื่อ port
*x แทนชื่อ pin