GPIO: различия между версиями
Материал из me-robotics wiki
Sh-sergey (обсуждение | вклад) (Новая страница: «Пример работы с GPIO:<syntaxhighlight lang="c"> #include <mcu32_memory_map.h> #include <pad_config.h> #include <gpio.h> #include <power_manager.h>...») |
Sh-sergey (обсуждение | вклад) |
||
Строка 6: | Строка 6: | ||
#include <gpio.h> | #include <gpio.h> | ||
#include <power_manager.h> | #include <power_manager.h> | ||
+ | |||
+ | // Установите в соответствии с подключением светодиода | ||
+ | #define LED_PORT GPIO_1 // Порт | ||
+ | #define LED_PIN 3 // Вывод порта | ||
+ | #define CLOCK_GPIO_PORT PM_CLOCK_GPIO_1_M // Тактирование порта | ||
+ | #define PIN_MODE_GPIO 1 // Режим вывода - GPIO | ||
+ | #define PIN_MODE_PORT PORT_1_CFG // Регистр управления режимом порта | ||
void initClock() { | void initClock() { | ||
− | PM->CLK_APB_P_SET = | + | PM->CLK_APB_P_SET = CLOCK_GPIO_PORT; |
PM->CLK_APB_M_SET = PM_CLOCK_PAD_CONFIG_M | PM_CLOCK_WU_M | PM_CLOCK_PM_M; | PM->CLK_APB_M_SET = PM_CLOCK_PAD_CONFIG_M | PM_CLOCK_WU_M | PM_CLOCK_PM_M; | ||
for (volatile int i = 0; i < 10; i++) ; | for (volatile int i = 0; i < 10; i++) ; | ||
Строка 14: | Строка 21: | ||
void ledBlink() { | void ledBlink() { | ||
− | + | LED_PORT->OUTPUT = 1 << LED_PIN; // Установка значения вывода порта 1 в высокий уровень | |
− | for (volatile int i = 0; i < | + | for (volatile int i = 0; i < 1000000; i++); |
− | + | LED_PORT->OUTPUT = 0; | |
− | for (volatile int i = 0; i < | + | for (volatile int i = 0; i < 1000000; i++); |
} | } | ||
− | + | int main() { | |
initClock(); | initClock(); | ||
− | PAD_CONFIG-> | + | PAD_CONFIG->PIN_MODE_PORT = PIN_MODE_GPIO << (LED_PIN << 1) ; // Установка порта 1 в режим GPIO |
− | + | LED_PORT->DIRECTION_OUT = 1 << LED_PIN; // Установка направления порта 1 в выход | |
while (1) { | while (1) { |
Текущая версия на 16:45, 12 апреля 2022
Пример работы с GPIO:
#include <mcu32_memory_map.h>
#include <pad_config.h>
#include <gpio.h>
#include <power_manager.h>
// Установите в соответствии с подключением светодиода
#define LED_PORT GPIO_1 // Порт
#define LED_PIN 3 // Вывод порта
#define CLOCK_GPIO_PORT PM_CLOCK_GPIO_1_M // Тактирование порта
#define PIN_MODE_GPIO 1 // Режим вывода - GPIO
#define PIN_MODE_PORT PORT_1_CFG // Регистр управления режимом порта
void initClock() {
PM->CLK_APB_P_SET = CLOCK_GPIO_PORT;
PM->CLK_APB_M_SET = PM_CLOCK_PAD_CONFIG_M | PM_CLOCK_WU_M | PM_CLOCK_PM_M;
for (volatile int i = 0; i < 10; i++) ;
}
void ledBlink() {
LED_PORT->OUTPUT = 1 << LED_PIN; // Установка значения вывода порта 1 в высокий уровень
for (volatile int i = 0; i < 1000000; i++);
LED_PORT->OUTPUT = 0;
for (volatile int i = 0; i < 1000000; i++);
}
int main() {
initClock();
PAD_CONFIG->PIN_MODE_PORT = PIN_MODE_GPIO << (LED_PIN << 1) ; // Установка порта 1 в режим GPIO
LED_PORT->DIRECTION_OUT = 1 << LED_PIN; // Установка направления порта 1 в выход
while (1) {
ledBlink();
}
}