Tento první článek ze série Tutoriál: STM32F746 (STM32F7 Discovery) bych chtěl věnovat rozsvícení LED resp. základnímu ovládání GPIO. Proč jsem začal psát tyto tutoriály a proč nechci používat HAL nebo Standard Peripheral Library.
Zároveň vzorové příklady kódů mohou sloužit i pro další STM32F (STM32F407, STM32F103, STM32F427, STM32F746 a další) popřípadě STM32L (STM32L100, STM32L152, STM32L476 a další) s menšími změnami – typicky atypické periferie či změna zdroje hodin pro periferie – AHB, APB…
Kódy budou tedy psané pro STM32F746 ve vývojovém prostředí AC6 System Workbench for STM32 od http://openstm32.org. Samozřejmě lze kódy přenášet i na další vývojové IDE jako např. Keil.
Další články o STM32(F7):
Tutorial: STM32F746 (STM32F7 Discovery) – Tlačítkem rozsvítit/zhasnout LED
Tutorial: STM32F746 (STM32F7 Discovery) – jak zapnout LED (ovládání GPIO)
STM32F746 discovery a IDE AC6 (System Workbench for STM32)
Jak začít s moderními mikrokontroléry a proč – STM32
Nejprve: proč nepoužívám HAL nebo Standard Peripheral Library.
Jednoduše řečeno, kódy píší lidi a lidi dělají chyby. Pokud využiju například HAL a zrovna tam bude chyba, po x hodinách hrabání ve vlastním kódu, proč to nefunguje, programátor zamíří do kódu HAL… a to není sranda…
Pak je to o ovládání vlastního kódu, znalosti jeho funkčnosti a možností. HAL nebo Standard Peripheral Library je výborná věc ulehčující práci a pokud ho chcete používat, nikdo vám bránit nebude… ale pak pro vás tento tutoriál nebude.
Tutoriál bude psaný formou hotových okomentovaných kódu a v případě, že bude něco složitějšího či nepřehledného, vysvětlím to zde na stránce. Vemte prosím v potaz, že nikdo není dokonalý a ne vše dobře či srozumitelně popíšu. Vsázím na váš zájem a že si datasheet či reference manual daného čipu projdete 🙂
main.h
/*
* main.c
*
* Created on: 14. 8. 2015
* Author: petus
* Website: http://chiptron.cz
*/
#ifndef MAIN_H_
#define MAIN_H_
#include „stm32f7xx.h“
#include „stm32f746xx.h“
#include „system_stm32f7xx.h“
#include
#include
#endif /* MAIN_H_ */
main.c
/*
* main.c
*
* Created on: 14. 8. 2015
* Author: petus
* Website: http://chiptron.cz
*/
#include „main.h“
int main(void)
{
//—-LED—-//
RCC->AHB1ENR |= RCC_AHB1ENR_GPIOIEN; //Enable clock for PORT I
RCC->AHB1RSTR |= RCC_AHB1RSTR_GPIOIRST; //Reset PORT I
RCC->AHB1RSTR &= ~RCC_AHB1RSTR_GPIOIRST;
GPIOI->MODER |= GPIO_MODER_MODER1_0; //Set mode register PIN 1, PORT I
GPIOI->OSPEEDR |= GPIO_OSPEEDER_OSPEEDR1; //Set speed register PIN 1, PORT I
GPIOI->ODR |= GPIO_ODR_ODR_1; //Set output data register PIN 1, PORT I
while(1)
{
}
}
MODERy[1:0] slouží k nastavení PINu
00: PIN jako vstup
01: PIN jako výstup
10: Alternativní funkce PINu
11: Analogový vstup
OSPEEDRy[1:0] slouží k nastavení maximálně frekvence změny PINu nastaveného jako výstup
00: Low speed
01: Medium speed
10: Fast speed
11: High speed
Další články o STM32(F7):
Tutorial: STM32F746 (STM32F7 Discovery) – Tlačítkem rozsvítit/zhasnout LED
Tutorial: STM32F746 (STM32F7 Discovery) – jak zapnout LED (ovládání GPIO)
STM32F746 discovery a IDE AC6 (System Workbench for STM32)
Jak začít s moderními mikrokontroléry a proč – STM32