Данная библиотека используется для считывания данных с цифровых выводов микроконтроллера. Используемые выводы должны быть объявлены в «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 и отдельная библиотека для использования в других проектах. Автор оригинала статьи просит задавать вопросы на его сайте на немецком или английских языках.
Прикрепленные файлы:
- Demo_04_DigIn_rus.rar (201 Кб)
- ub_stm32f4_digin_v102_rus.rar (5 Кб)
Комментарии (8) | Я собрал (0) | Подписаться
Для добавления Вашей сборки необходима регистрация
[Автор]
2) В этом цикле идет развитие от простого к сложному, позднее появятся интересный статьи, такие как USB и тд
[Автор]
[Автор]