Реклама ⓘ
Главная » Микроконтроллеры
Призовой фонд
на апрель 2024 г.
1. 100 руб.
От пользователей

Похожие статьи:


Реклама ⓘ

STM32F4. Урок 4 - цифровые входы

Данная библиотека используется для считывания данных с цифровых выводов микроконтроллера. Используемые выводы должны быть объявлены в «stm32_ub_dig_in.h» и присвоены соответствующие значения в файле «stm32_ub_dig_in.c». Для каждого входа можно так же включить подтягивающее сопротивление (три режима: отсутствует, подтяжка «вверх», подтяжка «вниз»).

Начиная с библиотеки версии 1.2 в «stm32_ub_dig_in.h» можно включить защиту от дребезга контактов, использующую таймер. Тогда станут доступны функции "OnHiLevel", "OnHiEdge" и "OnLoEdge". Эти функции возвращают "true", когда происходит событие.

В примере используется 4 вывода: PD3, PD6, PD11, PE4.

Требования:

  • Подключаемые модули CooCox-IDE : GPIO (TIM, MISC)
  • Поддерживаемые библиотеки: отсутствуют.

Перечисления:

typedef enum 
{
  DIN_PD3 = 0,    // PD3-Pin
  DIN_PD6 = 1,    // PD6-Pin
  DIN_PD11 = 2,   // PD11-Pin
  DIN_PE4 = 3     // PE4-Pin
}DIN_NAME_t;

Функции:

void UB_DigIn_Init(void);                    // Инициализация выводов цифровых входов
BitAction UB_DigIn_Read(DIN_NAME_t dig_pin); // считать уровень на входе (без защиты от дребезга)
bool UB_DigIn_OnHiLevel(DIN_NAME_t dig_pin); // true, если установлен высокий уровень (с защитой от дребезга)
bool UB_DigIn_OnHiEdge(DIN_NAME_t dig_pin);  // true, если появился высокий уровень по фронту (с защитой от дребезга)
bool UB_DigIn_OnLoEdge(DIN_NAME_t dig_pin);  // true, если появился низкий уровень по фронту (с защитой от дребезга)

Пример использования:


//--------------------------------------------------------------
// File     : main.c
// Datum    : 16.02.2013
// Version  : 1.0
// Autor    : UB
// EMail    : mc-4u(@)t-online.de
// Web      : www.mikrocontroller-4u.de
// CPU      : STM32F4
// IDE      : CooCox CoIDE 1.7.0
// Module   : CMSIS_BOOT, M4_CMSIS_CORE
// Function : Demo of Button Library
// Reference: These two files must be written to 8MHz
//              "cmsis_boot/stm32f4xx.h"
//              "cmsis_boot/system_stm32f4xx.c"
//--------------------------------------------------------------

#include "main.h"
#include "stm32_ub_dig_in.h"
#include "stm32_ub_dig_out.h"

int main(void)
{
  BitAction wert;

  SystemInit(); // Инициализация настроек кварца

  UB_DigIn_Init();  // Инициализация цифровых входов
  UB_DigOut_Init(); // Инициализация цифровых выходов

  while(1)
  {
	// Зачитать уровень на входе PD3 и установить полученное значение на выходе PB2
    wert=UB_DigIn_Read(DIN_PD3);
    UB_DigOut_Pin(DOUT_PB2,wert);
	// Зачитать уровень на входе PD6 и установить полученное значение на выходе PB7
    wert=UB_DigIn_Read(DIN_PD6);
    UB_DigOut_Pin(DOUT_PB7,wert);
	// Зачитать уровень на входе PD3 и установить полученное значение на выходе PC6
    wert=UB_DigIn_Read(DIN_PD11);
    UB_DigOut_Pin(DOUT_PC6,wert);
	// Зачитать уровень на входе PE4 и установить полученное значение на выходе PC13
    wert=UB_DigIn_Read(DIN_PE4);
    UB_DigOut_Pin(DOUT_PC13,wert);
  }
}

Режим работы:

  • GPIO-выводы PB2, PB7, PC6 и PC13 настраиваются как цифровые выходы (в библиотеке);
  • GPIO-выводы PD3, PD6, PD11 и PE4 настраиваются как цифровые входы (в библиотеке);
  • на входах считывается уровень сигнала, и полученные данные устанавливаются на выходах.

Библиотека, использованная в примере: stm32_ub_dig_out, stm32_ub_dig_in.

В приложении проект CooCox и отдельная библиотека для использования в других проектах. Автор оригинала статьи просит задавать вопросы на его сайте на немецком или английских языках.

Оригинал статьи

Прикрепленные файлы:

Теги:

Опубликована: 0 0
Я собрал 0 3
x

Оценить статью

  • Техническая грамотность
  • Актуальность материала
  • Изложение материала
  • Полезность устройства
  • Повторяемость устройства
  • Орфография
0

Средний балл статьи: 5 Проголосовало: 3 чел.

Комментарии (8) | Я собрал (0) | Подписаться

0
Никита #
А чем это отличается от стандартной библиотеки, что ST предоставляет для работы с железом?
Ответить
0

[Автор]
Rough #
1) Подробное описание работы
2) В этом цикле идет развитие от простого к сложному, позднее появятся интересный статьи, такие как USB и тд
Ответить
-2
Никита #
Ну так и их библиотека подробно описана. Зачем создавать велосипед? Кроме того их библиотека уже неоднократно отлажена и поддерживает практически всё семейство их камней и удобна в использовании. У Вас такая поддержка есть? И как пользователю настроить отдельно порты, если они у Вас конфигурятся в библиотеке?
Ответить
0
talibanich #
Это перевод статьи. Если есть вопросы к автору, то и спросите у него в блоге. Ссылка на оригинал есть.
Ответить
0

[Автор]
Rough #
Библиотеку можно подготовить самостоятельно для Вашего проекта, добавить все порты, которые Вы будете использовать. Комментарии в библиотеке помогут понять как это сделать.
Ответить
0
RadioV #
А с какой периодичностью будут выходить переводы?
Ответить
0

[Автор]
Rough #
Ориентировочно 2-3 статьи в неделю.
Ответить
0
bitterman #
Извиняюсь, а сколько места в результирующем бинаре занимает эта библиотека? Свои функции-коллбеки для результатов дребезга - это прекрасно (правда), но всегда за удобство чем-то расплачиваешься
Ответить
Добавить комментарий
Имя:
E-mail:
не публикуется
Текст:
Защита от спама:
В чем измеряется электрическая мощность?
Файлы:
 
Для выбора нескольких файлов использйте CTRL

AVR-программатор USB ASP
AVR-программатор USB ASP
Лазерный модуль 650нм 5мВт Конструктор регулируемого преобразователя напряжения LM317
вверх