Presentation is loading. Please wait.

Presentation is loading. Please wait.

Practice 2 Asst. Prof. Dr. Alper ŞİŞMAN. GPIO Module Output states: push-pull or open drain + pull- up/down Output data from output data register (GPIOx_ODR)

Similar presentations


Presentation on theme: "Practice 2 Asst. Prof. Dr. Alper ŞİŞMAN. GPIO Module Output states: push-pull or open drain + pull- up/down Output data from output data register (GPIOx_ODR)"— Presentation transcript:

1 Practice 2 Asst. Prof. Dr. Alper ŞİŞMAN

2 GPIO Module Output states: push-pull or open drain + pull- up/down Output data from output data register (GPIOx_ODR) or peripheral (alternate function output) Speed selection for each I/O Input states: floating, pull-up/down, analog Input data to input data register (GPIOx_IDR) or peripheral (alternate function input) Bit set and reset register (GPIOx_BSRR) for bitwise write access to GPIOx_ODR

3 Locking mechanism (GPIOx_LCKR) provided to freeze the I/O configuration Analog function Alternate function input/output selection registers (at most 16 AFs per I/O) Fast toggle capable of changing every two clock cycles Highly flexible pin multiplexing allows the use of I/O pins as GPIOs or as one of several peripheral functions During and just after reset, the alternate functions are not active and the I/O ports are configured in input floating mode.

4 The configuration steps of GPIO pin The clock signal of corresponding GPIO HW must be activated : – RCC->AHB1ENR: Reset&Clock control reg.->AHB1 enable register. The pins must be defined as input or output – GPIOD->MODER: Mode register 32-bit for 16 pins:

5 The output type must be configured – GPIOD=>OTYPER: The output speed must be configured – GPIOD=>OSPEEDR: 32 bit register for 16 pins.

6 The pull up resistor configuration mus be set – GPIOD=>PUPDR: 32 bit reg.  16 pins

7 Read/Write Registers GPIO port input data register: GPIOD=>IDR GPIO port output data reg.:GPIOD=>ODR GPIO port bit set/reset reg.: GPIOD=>BSRR

8 Other GPIO Registers GPIO port configuration lock reg. GPIO alternate function low reg. GPIO alternate function high reg. Further information can be seen on page 278. (ref manual RM0090)

9 Blinking LED Run in DEBUG mode step by step and see four LED in on and off. #include "STM32F4xx.h” void SystemInit() { (*((int*)0xE000ED88))|=0x0F00000; // Floating Point donanimini aktiflestir. RCC->AHB1ENR |= 0x ; // GPIOD donaniminin clock sinyalini uygulayalim GPIOD->MODER = 0x ; // GPIOD nin 15, 14, 13, 12 pinleri cikis tanimlandi (Ledler bu pinlerde) GPIOD->OSPEEDR= 0xFFFFFFFF; // GPIOD nin tum cikislari en yuksek hizda kullanacagiz }

10 int main() { while(1) { GPIOD->ODR= 0x0000F000; // Ledler yansin GPIOD->ODR= 0x ; // Ledler sonsun }

11 Add a delay subrotine void delayy(){ int delay0 = 0x000FFFFF; while (delay0--){ }

12 Call delayy from main int main() { while(1) { GPIOD->ODR= 0x0000F000; // Ledler yansin delayy(); GPIOD->ODR= 0x ; // Ledler sonsun delayy(); }

13 Read Button Activate GPIOA clock Configure A0 as input (it is default), bus speed and no pull up/down void SystemInit() { (*((int*)0xE000ED88))|=0x0F00000; // Floating Point donanimini aktiflestir. RCC->AHB1ENR |= 0x ; // GPIOD &A donaniminin clock sinyalini uygulayalim GPIOD->MODER = 0x ; // GPIOD nin 15, 14, 13, 12 pinleri cikis tanimlandi (Ledler bu pinlerde) GPIOD->OSPEEDR= 0xFFFFFFFF; // GPIOD nin tum cikislari en yuksek hizda kullanacagiz GPIOA->OSPEEDR= 0xFFFFFFFF; // GPIOA nin tum girisleri en yuksek hizda kullanacagiz GPIOA->PUPDR = 0x ; }

14 Stop blinking When button is pressed the blinking will stop: int main() { while(1) { while ((GPIOA->IDR & 0x1) == 0){ } GPIOD->ODR= 0x0000F000; // Ledler yansin delayy(); GPIOD->ODR= 0x ; // Ledler sonsun delayy(); }

15 Define D0 as output&observe it void SystemInit() { (*((int*)0xE000ED88))|=0x0F00000; // Floating Point donanimini aktiflestir. RCC->AHB1ENR |= 0x ; // GPIOD &A donaniminin clock sinyalini uygulayalim GPIOD->MODER = 0x ; // GPIOD nin 15, 14, 13, 12 ve 0. pinleri cikis tanimlandi (Ledler bu pinlerde+0. pin) GPIOD->OSPEEDR= 0xFFFFFFFF; // GPIOD nin tum cikislari en yuksek hizda kullanacagiz GPIOA->OSPEEDR= 0xFFFFFFFF; // GPIOA nin tum girisleri en yuksek hizda kullanacagiz GPIOA->PUPDR = 0x ;}

16 HW#2 Connect a 7-segment to the STM32F4x board Write a number between 1-9 on the 7- segment When user button is pressed number 0 should be seen on the 7-segment.


Download ppt "Practice 2 Asst. Prof. Dr. Alper ŞİŞMAN. GPIO Module Output states: push-pull or open drain + pull- up/down Output data from output data register (GPIOx_ODR)"

Similar presentations


Ads by Google