Про Keil uVision 5

Кто любит RISC в жизни, заходим, не стесняемся.
Аватара пользователя
Myp3ik
Мучитель микросхем
Сообщения: 450
Зарегистрирован: Вс янв 09, 2011 23:05:37
Откуда: СССР

Re: Про Keil uVision 5

Сообщение Myp3ik »

А если добавить
Вложения
Clip.jpg
(106.09 КБ) 975 скачиваний
Иван Сусанин - первый полупроводник :solder:
TDuke
Первый раз сказал Мяу!
Сообщения: 31
Зарегистрирован: Сб сен 08, 2012 22:02:38

Re: Про Keil uVision 5

Сообщение TDuke »

Когда определял те ключи, так ошибки лавиной сыпались. Разобрался по другому. Подключил еще файл с определением макроса - stm32f10x_conf.h Все заработало. Потом полчаса разбирался с прошивкой и отладкой. При отладке VLDiscovery нужно и STlink менять на другой. Просто много непривычных мелочей. Например не заметил, что стоит выбор на Use Simulator, вместо дебаггера ST-Link.

Спасибо за помощь))
Аватара пользователя
Myp3ik
Мучитель микросхем
Сообщения: 450
Зарегистрирован: Вс янв 09, 2011 23:05:37
Откуда: СССР

Re: Про Keil uVision 5

Сообщение Myp3ik »

Вот пустой проект под STM32F429
Вложения
STM32F4.RAR
(317.83 КБ) 423 скачивания
Иван Сусанин - первый полупроводник :solder:
TDuke
Первый раз сказал Мяу!
Сообщения: 31
Зарегистрирован: Сб сен 08, 2012 22:02:38

Re: Про Keil uVision 5

Сообщение TDuke »

Благодарю!

Вижу файл с макросом ассерт вынесен в отдельную папку SPL_Config. Так же вижу папку Out, а где в менеджере проекта настраивается вывод в эту папку?

Проблема с отладчиком. Захожу в отладку по брейкпоинту а локальные переменные отладчик не видит. Пишет что переменные не в зоне видимости. Что за фигня? Через вотч тоже не видно. Что у меня не настроено?

Изображение
HHIMERA
Друг Кота
Сообщения: 4583
Зарегистрирован: Вс дек 05, 2010 06:10:34
Откуда: ЮВ

Re: Про Keil uVision 5

Сообщение HHIMERA »

А он и не должен их видеть... на то они и локальные... Смотрите в регистрах...
"Я не даю готовых решений, я заставляю думать!"(С)
TDuke
Первый раз сказал Мяу!
Сообщения: 31
Зарегистрирован: Сб сен 08, 2012 22:02:38

Re: Про Keil uVision 5

Сообщение TDuke »

Плохо. ГНУшный дебаггер под кокосом видел и локальные и глобальные переменные. Смысл тогда от дебаггера, который не может простым образом показывать элементарное юзеру?

Он точно не может видеть локальные переменные, параметры процедур? Как-то это совсем хило.

Только в регистрах? Через стек ничего не передается?
HHIMERA
Друг Кота
Сообщения: 4583
Зарегистрирован: Вс дек 05, 2010 06:10:34
Откуда: ЮВ

Re: Про Keil uVision 5

Сообщение HHIMERA »

Закладка Registers...
"Я не даю готовых решений, я заставляю думать!"(С)
Аватара пользователя
Аlex
Модератор
Сообщения: 4614
Зарегистрирован: Чт мар 18, 2010 23:09:57
Откуда: Планета Земля
Контактная информация:

Re: Про Keil uVision 5

Сообщение Аlex »

Все последние посты, неотносящиеся к теме, перенесены в новую тему - viewtopic.php?f=59&t=105004
Аватара пользователя
baghear
Опытный кот
Сообщения: 791
Зарегистрирован: Вт июн 17, 2014 00:34:26

Re: Про Keil uVision 5

Сообщение baghear »

Добрый день подскажите за что отвечают флаги T, IT,ISR в регистре xPSR.
Еще вопрос, есть такой код
GPIO_StructInit(&port);
port.GPIO_Mode = GPIO_Mode_AF_PP;
port.GPIO_Pin = GPIO_Pin_6;
port.GPIO_Speed = GPIO_Speed_2MHz;
GPIO_Init(GPIOB, &port);
Почему мы передаем значение по ссылке?
Аватара пользователя
Myp3ik
Мучитель микросхем
Сообщения: 450
Зарегистрирован: Вс янв 09, 2011 23:05:37
Откуда: СССР

Re: Про Keil uVision 5

Сообщение Myp3ik »

http://infocenter.arm.com/help/index.jsp?topic=/com.arm.doc.ddi0337e/ch02s03s02.html

Не значение по ссылке, а указатель, в данном случае на структуру. А что не так ?
Иван Сусанин - первый полупроводник :solder:
Аватара пользователя
baghear
Опытный кот
Сообщения: 791
Зарегистрирован: Вт июн 17, 2014 00:34:26

Re: Про Keil uVision 5

Сообщение baghear »

*port- разве указатель не так?
Аватара пользователя
menzoda
Вымогатель припоя
Сообщения: 535
Зарегистрирован: Вт авг 28, 2012 22:21:33

Re: Про Keil uVision 5

Сообщение menzoda »

*port - это звездочка и четыре латинские буквы, а вот

Код: Выделить всё

SomeType *port
это уже указатель, при этом это разадресация указателя.
Аватара пользователя
baghear
Опытный кот
Сообщения: 791
Зарегистрирован: Вт июн 17, 2014 00:34:26

Re: Про Keil uVision 5

Сообщение baghear »

Ваша правда.
SomeType *port - указатель и &port - указатель?
Как из этой функции узнать что надо передавать указатель?
void GPIO_StructInit(GPIO_InitTypeDef* GPIO_InitStruct)
{
/* Reset GPIO init structure parameters values */
GPIO_InitStruct->GPIO_Pin = GPIO_Pin_All;
GPIO_InitStruct->GPIO_Speed = GPIO_Speed_2MHz;
GPIO_InitStruct->GPIO_Mode = GPIO_Mode_IN_FLOATING;
}
Аватара пользователя
Myp3ik
Мучитель микросхем
Сообщения: 450
Зарегистрирован: Вс янв 09, 2011 23:05:37
Откуда: СССР

Re: Про Keil uVision 5

Сообщение Myp3ik »

menzoda же постом выше написал как объявляется указатель.

void GPIO_StructInit(GPIO_InitTypeDef* GPIO_InitStruct) - здесь видно, что в качестве параметра функция принимает указатель на тип GPIO_InitTypeDef.

Здесь Вы найдете ответы на все вопросы по Си
Спойлерhttp://os24.org/files/books/Brian_Kernighan_Dennis_Ritchie-The_C_Programming_Language-RU.pdf
Иван Сусанин - первый полупроводник :solder:
Аватара пользователя
baghear
Опытный кот
Сообщения: 791
Зарегистрирован: Вт июн 17, 2014 00:34:26

Re: Про Keil uVision 5

Сообщение baghear »

Вы несколько постов назад писали что &port-указатель.
Mendoza писал что sometype *port-указатель.
Кто прав?
Думаю все таки & - унарная операция взятия адреса.
Аватара пользователя
menzoda
Вымогатель припоя
Сообщения: 535
Зарегистрирован: Вт авг 28, 2012 22:21:33

Re: Про Keil uVision 5

Сообщение menzoda »

Подведем итог.

Код: Выделить всё

typedef struct
{
    Int32 x;
    Int32 y;
} Point;

// Переменная с типом "указатель на Point", или, иначе говоря, переменная, содержащая адрес Point.
// Размер foo в общем случае зависит от разрядности ядра: к примеру, на 32-битных ARM он будет
// равен четырм байтам, собственно как и все остальные указатели, на что бы они не указывали.
Point *foo;

// Переменная с типом Point. В данном случае ее размер будет равен 8 байт.
Point bar;

// Функция, принимающая в качестве параметра указатель на Point, или, иначе говоря, адрес Point,
// что то же самое.
void Move(Point *foo)
{
    foo->x++;
    foo->y++;
}

// Вызываем функцию и передаем ей указатель на Point.
Move(foo);

// А так нельзя, ведь функция ожидает указатель на Point, а мы ей передаем bar, которая имеет тип Point.
Move(bar);

// А так можно. С помощью оператора & мы получили адрес переменной bar, то есть адрес Point, то есть
// указатель на Point. Получается, тип &bar - это указатель на Point.
Move(&bar);

// А так нельзя. потому что тип &foo - указатель на указатель Point, или, иначе говоря, адрес переменной,
// содержащей адрес переменной, содержащей Point.
Move(&foo);
Аватара пользователя
Myp3ik
Мучитель микросхем
Сообщения: 450
Зарегистрирован: Вс янв 09, 2011 23:05:37
Откуда: СССР

Re: Про Keil uVision 5

Сообщение Myp3ik »

baghear, совершенно верно, взятия адреса, потому что указатель это и есть адрес (вернее область памяти которая хранит этот адрес...).

Например:

Код: Выделить всё

int data = 64;
int *dataPointer = &data;


И теперь dataPointer и &data это одно и то же.

Например у нас есть функция которая в качестве параметра принимает указатель на тип int. Её прототип выглядит так:

Код: Выделить всё

Foo(int *input);


Вызвать эту функцию мы можем так:

Код: Выделить всё

Foo(dataPointer);


или так:

Код: Выделить всё

Foo(&data);


И если бы функция имела такую реализацию:

Код: Выделить всё

Foo(int *input)
{
    *input++;
}


То при её вызове значение переменной data увеличивалось бы на единицу.

Пока писал, за меня уже всё написали :)
Иван Сусанин - первый полупроводник :solder:
Аватара пользователя
baghear
Опытный кот
Сообщения: 791
Зарегистрирован: Вт июн 17, 2014 00:34:26

Re: Про Keil uVision 5

Сообщение baghear »

Спасибо!!! :))
Аватара пользователя
baghear
Опытный кот
Сообщения: 791
Зарегистрирован: Вт июн 17, 2014 00:34:26

Re: Про Keil uVision 5

Сообщение baghear »

Добрый день, что означает строчка
*(uint16_t *) (LCD_REG) = reg;
особенно первая звездочка интересует
Аватара пользователя
menzoda
Вымогатель припоя
Сообщения: 535
Зарегистрирован: Вт авг 28, 2012 22:21:33

Re: Про Keil uVision 5

Сообщение menzoda »

LCD_REG - это просто число, адрес какого-то регистра размером 16 бит в памяти. Чтобы записать что-нибудь по этому адресу или прочитать, первым делом необходимо привести его к типу "указатель на целое 16-битное число", это делает конструкция (uint16_t *). Чтобы получить доступ непосредственно к значению (для чтения и записи), на которое указывает указатель, нужно его разадресовать, что делает первая звездочка.
Ответить

Вернуться в «ARM»