GPIO: различия между версиями
Материал из MIK32 микроконтроллер
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) { |
Версия от 13: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(); } }