Thứ Sáu, 3 tháng 6, 2016

LED - GPIO (general-purpose inputs/outputs)



Một pin của STM32 có rất nhiều tính năng, nên nguyên tắc đầu tiên khi ta sử dụng pin là phải cấu hình (configure) chức năng của pin đó.

  
Thư viện định nghĩa chức năng của GPIO như sau:
typedef enum
{ GPIO_Mode_AIN = 0x0, // ==> Analog input
  GPIO_Mode_IN_FLOATING = 0x04, //==> input
  GPIO_Mode_IPD = 0x28, //==> Input with pulldown
  GPIO_Mode_IPU = 0x48,//==> Input with pullup
  GPIO_Mode_Out_OD = 0x14,
  GPIO_Mode_Out_PP = 0x10,
  GPIO_Mode_AF_OD = 0x1C,
  GPIO_Mode_AF_PP = 0x18
}GPIOMode_TypeDef;


Input Configuration

1.      Input floating: thả nổi
2.      Pull-up: chân Input được điện trở kéo lên nguồn
3.      Pull-down: chân Input được điện trở kéo xuống GND
 
 

Output Configuration

1.      Open Drain Mode
a.       Xuất mức logic 0 --> out 0 (N-MOS)
b.      Xuất mức logic 1 --> thả nổi (trạng thái Hi-Z)
2.      Push-Pull Mode
a.       Xuất mức logic 0 --> out logic 0 (N-MOS)
b.      Xuất mức logic 1 --> out logic 1 (P-MOS)

 

 

Alternate function Configuration

 

Xét một ví dụ như sau


Có 4 led nối lần lượt vào PA0, PA1, PA2, PA3. Viết chương trình khi bật nguồn thì:
·         LED1, LED3 sáng
·         LED2, LED4 tắt

 



·         PORTA trong thư viện “StdPeriph_Driver” được đặt tên là GPIOA, tương tự ta có GPIOB (PortB), GPIOC (PortC), GPIOD (PortD).
·         Số thứ tự của pin được định nghĩa như sau:
o   PORTA.0 ==> GPIOA và GPIO_Pin_0 ….
o   PORTB.10 ==> GPIOB và GPIO_Pin_10 ….