Здравствуйте!
Пытаюсь написать маленькую программку которая работает с портами GPIOx и столкнулся с проблемой
(Да, кстати пишу в CoIDE версии 1.7.5) И так что я делаю:
1.Подключаю 2 библиотеки (stm32f4xx_rcc.h и stm32f4xx_gpio.h)
2.Подключаю тактирование GPIOx(в моем случаи это GPIOD, то есть порт D)
3.И тут возник нюанс, я понимаю что мне в начале необходимо настроить порт D(а именно регистры:
GPIOx_MODER,
GPIOx_OSPEEDR,
GPIOx_PUPDR,
GPIOx_OTYPER)
И если я нечего не путаю, то по datasheet эти регистры располагаются по адресам:
GPIOx_MODER = 0x00 (Выбираем в каком режиме будет работать. Вход, выход, альтернативный)
GPIOx_OSPEEDR = 0x08 (Выбираем скорость порта)
GPIOx_PUPDR = 0x0C (Выбираем режим Pull)
GPIOx_OTYPER = 0x04
Теперь в эти регистры надо записать конфигурацию порта.
Пытался это сделать как вот в этой статье(
http://easystm32.ru/for-beginners/11-mcu-ports Не реклама!!), там написано что за конфигурацию порта отвечают два регистра GPIOx_CRL (младший. от 0 до 7) и GPIOx_CRH (Старший, от 8 по 15). я попробовал настроить как сказано в статье, но компилятор ругается на строчку
и выдает ошибку
Код: Выделить всё
D:\ARM\Prodject\CoIDE\Lesson 2\main.c:7:7: error: 'GPIO_TypeDef' has no member named 'CRH'
получается что компилятор не может найти регистр CRH? Я пытался найти в библиотеке stm32f4xx_gpio.h что-то похожее на CRH но у вы нечего нет, и в datasheet тоже нечего не сказано про этот регистр(( Это что получается, регистр CRH вымышленный человеком который писал библиотеку для CoIDE и он в реале состоит из нескольких регистров?
Подскажите пожалуйста, как правильно настроить GPIOx в CoIDE версии 1.7.5?(больше всего интересует синтаксис)
Где можно найти описание на стандартные библиотеки CoIDE?(help не предлагать, я так и не понял как он работает( )
P.S. Отладочная плата STM32F4Descovery c контролером STM32F407VG.
Спасибо за внимание!
Запустил демо пример из CoIDE и там есть вот такие строчки:
Код: Выделить всё
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_12 | GPIO_Pin_13| GPIO_Pin_14| GPIO_Pin_15;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_OUT;
GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_100MHz;
GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_NOPULL;
GPIO_Init(GPIOD, &GPIO_InitStructure);
Это все отлично компилируется и работает в железе, но у меня возник очередной глупый вопрос. В моем понимание при таком решении настройки портов GPIOx я не могу настроить половину портов на вход и половину на выход(пример: pin12,13 на выход / pin 14,15 на вход). Это так? В общем задача такова: мне надо настроить порт следующим образом pin12,13 на выход / pin 14,15 на вход, как мне это сделать?