реклама на сайте
подробности

 
 
> объясните логику дефайна
Метценгерштейн
сообщение Jan 3 2013, 14:53
Сообщение #1


Профессионал
*****

Группа: Свой
Сообщений: 1 357
Регистрация: 12-04-05
Из: Петербург
Пользователь №: 4 079



#define GPIO_OSPEEDER_OSPEEDR0 ((uint32_t)0x00000003)
#define GPIO_OSPEEDER_OSPEEDR0_0 ((uint32_t)0x00000001)
#define GPIO_OSPEEDER_OSPEEDR0_1 ((uint32_t)0x00000002)

текст
00: 400 kHz Very low speed
01: 2 MHz Low speed
10: 10 MHz Medium speed
11: 40 MHz High speed on 50 pF (50 MHz output max speed on 30 pF)

и так по всему файлу они дефайнят.
т.е., допустим, я в нулевом пине хочу выставить скорость 2 Мгц.
почему по их логике это режим ...OSPEEDR0_0 ?
Получается, мне надо все время в голове держать, что
_OSPEEDR0 - это bin 11
_OSPEEDR0_0 bin 01
_OSPEEDR0_1 bin 10
?
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
SSerge
сообщение Jan 3 2013, 16:57
Сообщение #2


Профессионал
*****

Группа: Свой
Сообщений: 1 719
Регистрация: 13-09-05
Из: Novosibirsk
Пользователь №: 8 528



По их (авторов StdPerifLib) логике Вы должны завести структуру, заполнить ей нужные поля и позвать функцию, которая сконфигурирует пин.
где-то так:
Код
{
  GPIO_InitTypeDef GPIO_InitStructure;
//...............
  GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;
  GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_UP;
  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF;

  GPIO_InitStructure.GPIO_Pin = COM_TX_PIN[COM];
  GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
  GPIO_Init(COM_TX_PORT[COM], &GPIO_InitStructure);


А те определения - это их внутреннее дело, Вам туда смотреть не обязательно.
Безобразно, конечно, но хотя бы единообразно.


--------------------
Russia est omnis divisa in partes octo.
Go to the top of the page
 
+Quote Post
Метценгерштейн
сообщение Jan 4 2013, 10:05
Сообщение #3


Профессионал
*****

Группа: Свой
Сообщений: 1 357
Регистрация: 12-04-05
Из: Петербург
Пользователь №: 4 079



Цитата(SSerge @ Jan 3 2013, 20:57) *
По их (авторов StdPerifLib) логике Вы должны завести структуру, заполнить ей нужные поля и позвать функцию, которая сконфигурирует пин.
где-то так:
Код
{
  GPIO_InitTypeDef GPIO_InitStructure;
//...............
  GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;
  GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_UP;
  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF;

  GPIO_InitStructure.GPIO_Pin = COM_TX_PIN[COM];
  GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
  GPIO_Init(COM_TX_PORT[COM], &GPIO_InitStructure);


А те определения - это их внутреннее дело, Вам туда смотреть не обязательно.
Безобразно, конечно, но хотя бы единообразно.


один раз создавать объект типа надо? ( GPIO_InitStructure)
т.е. если ножки две мне надо описать? или на каждую ножку свой объект базовой структуры заводить?

а где мне указать в данной структуре, что у меня GPIOB , пин 7, например?

Сообщение отредактировал Метценгерштейн - Jan 4 2013, 10:12
Go to the top of the page
 
+Quote Post
Allregia
сообщение Jan 4 2013, 16:38
Сообщение #4


Профессионал
*****

Группа: Свой
Сообщений: 1 047
Регистрация: 28-06-07
Из: Israel
Пользователь №: 28 763



Цитата(Метценгерштейн @ Jan 4 2013, 12:05) *
один раз создавать объект типа надо? ( GPIO_InitStructure)


Надо.

Цитата
т.е. если ножки две мне надо описать? или на каждую ножку свой объект базовой структуры заводить?


Если ножки одного типа, т.е. например обе выходы, обе РР, обе 50Мгц, то их мжоно в одной структуре указать и одновременно проинитить.
Если разные, то обьект структуры не надо на каждую ножку отдельный создавать, можно использовать один и тот-же последовательно:
Код
  /* Configure SPI2 pins: SCK, MISO and MOSI */
   GPIO_InitStructure.GPIO_Pin = GPIO_Pin_5 | GPIO_Pin_6 | GPIO_Pin_7;
   GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
   GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;
   GPIO_Init(GPIOA, &GPIO_InitStructure);

   /* Configure PA.4 as Output push-pull, used as  Chip select */
   GPIO_InitStructure.GPIO_Pin = GPIO_Pin_4;
   GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
   GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
   GPIO_Init(GPIOA, &GPIO_InitStructure);


Цитата
а где мне указать в данной структуре, что у меня GPIOB , пин 7, например?


Например так:
Код
#define  MyPinNumber  GPIO_Pin_7
#define  MyPinPort      GPIOB

.....
   GPIO_InitStructure.GPIO_Pin = MyPinNumber;
   GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
   GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
   GPIO_Init(MyPinPort, &GPIO_InitStructure);
Go to the top of the page
 
+Quote Post



Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 25th July 2025 - 20:39
Рейтинг@Mail.ru


Страница сгенерированна за 0.01401 секунд с 7
ELECTRONIX ©2004-2016