0 / 0 / 0
Регистрация: 08.07.2013
Сообщений: 64

Keil MDK-ARM

15.07.2013, 17:52. Показов 18787. Ответов 29
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
На руках имеют две демонстрационные платки от ST: STM32VL omd STM32F4
Есть некоторые идеи, которые хотелось бы реализовать, но опыта и знаний мало. В связи с этим возник вопрос. Есть ли хорошая литература по компилятору в keil с описанием функций и прочего? Возможно что-то наподобие Manual Или на первых порах легче начать с изучения библиотечных мануалов от ST?
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
15.07.2013, 17:52
Ответы с готовыми решениями:

Keil MDK-ARM Version 5
Вышла 5-я версия. Из замеченных глюков, на мой взгляд ничего не изменилось ) Ярлык стал зеленным. ...

Keil MDK-ARM 5.11.0.0 Странное поведение CallStack
Столкнулся с явлением, которое не очень укладывается в моём сознании. Суть такова: При отладке в окне "Call Stack" появляются...

Keil MDK ARM 5 + Tiva C = полнейшая каша в голове
Разбираюсь тут с платкой http://www.ti.som/tool/ek-tm4c123gxl на TM4C123GH6PM. Установил Keil, библиотеки, скачал учебных проектов, всё...

29
1 / 1 / 0
Регистрация: 11.01.2013
Сообщений: 5,479
15.07.2013, 18:07
Цитата Сообщение от yzy125
Есть ли хорошая литература по компилятору в keil с описанием функций и прочего?
Ни компилятор, ни среда разработки Keil не имеют прямого отношения к "функциям", которые Вы собираетесь изучать. Keil - способ написать программу из этих "функций", скомпилировать её, прошить в МК, отладить.

Цитата Сообщение от yzy125
Или на первых порах легче начать с изучения библиотечных мануалов от ST?
Если с английским всё хорошо, то почему бы и нет. Кроме того, скачайте для своих плат пакеты готовых демо-проектов и по очереди их "поковыряйте". Каждый такой проект хорошо документирован и даёт Вам освоить некоторый набор полезных "функций".
0
0 / 0 / 0
Регистрация: 08.07.2013
Сообщений: 64
15.07.2013, 18:36
Цитата Сообщение от OtyxPM
Цитата Сообщение от yzy125
Есть ли хорошая литература по компилятору в keil с описанием функций и прочего?
Ни компилятор, ни среда разработки Keil не имеют прямого отношения к "функциям", которые Вы собираетесь изучать. Keil - способ написать программу из этих "функций", скомпилировать её, прошить в МК, отладить.

С формулировкой мысли проблемы у меня. Скорее подразумевал литературу по синтаксису си в keil, на просто уровне подергать ножку пина. Может я и ошибусь, предположив, что без использования библиотек для подобных действий, код будет попроще и поменьше.
0
1 / 1 / 0
Регистрация: 11.01.2013
Сообщений: 5,479
16.07.2013, 02:00
Цитата Сообщение от yzy125
[на просто уровне подергать ножку пина
Тогда тем более - скачайте стандартный пакет проектов с st.som, скомпилируйте самый простой из них - "Blinky" - в Keil, прошейте плату оттуда же (из Keil). Увидите мигающие светодиоды - начинайте читать исходники проекта там же (в Keil). Найдёте про "подёргать ножку пина" как с использованием библиотек, так и без использования.
Возвращайтесь с вопросами, если возникнут.
0
1 / 1 / 0
Регистрация: 06.12.2016
Сообщений: 3,946
16.07.2013, 09:35
yzy125 , из ваших реплик следует, что это ваш первый опыт общения как с МК так и с С.
0
0 / 0 / 0
Регистрация: 08.07.2013
Сообщений: 64
16.07.2013, 10:30
Цитата Сообщение от OtyxPM
Цитата Сообщение от yzy125
[на просто уровне подергать ножку пина
Тогда тем более - скачайте стандартный пакет проектов с st.som, скомпилируйте самый простой из них - "Blinky" - в Keil, прошейте плату оттуда же (из Keil). Увидите мигающие светодиоды - начинайте читать исходники проекта там же (в Keil). Найдёте про "подёргать ножку пина" как с использованием библиотек, так и без использования.
Возвращайтесь с вопросами, если возникнут.

спасибо,вернусь:)
0
0 / 0 / 0
Регистрация: 08.07.2013
Сообщений: 64
16.07.2013, 10:31
Цитата Сообщение от dosykus_2
yzy125 , из ваших реплик следует, что это ваш первый опыт общения как с МК так и с С.
в общих чертах да, опыт есть,но мелкий. пара простых прошивок для пиков на работе + учебный курс в универе + на шарпе мат проект , тоже в общем то простой:)
0
0 / 0 / 0
Регистрация: 08.07.2013
Сообщений: 64
05.08.2013, 11:16
и снова здесь.
столкнулся с необходимостью увеличить тактовую частоту на stm32f100rb. по умолчанию стоит 24 МГц, как можно изменить данную частоту?
0
1 / 1 / 0
Регистрация: 11.01.2013
Сообщений: 5,479
05.08.2013, 13:39
Цитата Сообщение от yzy125
и снова здесь.
столкнулся с необходимостью увеличить тактовую частоту на stm32f100rb. по умолчанию стоит 24 МГц, как можно изменить данную частоту?
Системный PLL надо "разгонять". Не знаю, есть ли в этом МК регистр PLLCFGR или в stm32f100rb он по-другому называется. Подберите коэффициенты умножения/деления в PLL для желаемой тактовой частоты.
Не увлекайтесь разгоном чересчур ;-)
0
0 / 0 / 0
Регистрация: 08.07.2013
Сообщений: 64
05.08.2013, 13:49
Цитата Сообщение от OtyxPM
Цитата Сообщение от yzy125
и снова здесь.
столкнулся с необходимостью увеличить тактовую частоту на stm32f100rb. по умолчанию стоит 24 МГц, как можно изменить данную частоту?
Системный PLL надо "разгонять". Не знаю, есть ли в этом МК регистр PLLCFGR или в stm32f100rb он по-другому называется. Подберите коэффициенты умножения/деления в PLL для желаемой тактовой частоты.
Не увлекайтесь разгоном чересчур ;-)

спасибо. над pll уже покуриваю, но тут понял, что столкнулся с детской глупостью. Как двумерные массивы объявляются в keil?

uint16_t mas[5][5]; - привел к залипаю программы по причине отказа в доступе к памяти.
еще школьное разделение [5;5] - выдает сходу ошибку.
0
1 / 1 / 0
Регистрация: 11.01.2013
Сообщений: 5,479
05.08.2013, 14:10
Цитата Сообщение от yzy125
Как двумерные массивы объявляются в keil?

uint16_t mas[5][5]; - привел к залипаю программы по причине отказа в доступе к памяти.
еще школьное разделение [5;5] - выдает сходу ошибку.
Не в Keil, а в Си :-)
"uint16_t mas[5][5];" - это правильно. Но если это задано локально внутри функции, в которой уже и без того много локальных переменных объявлено, то может не хватить стековой памяти, отсюда и ошибка.

Почему Вы думаете, что сбой программы происходит из-за этого объявления массива?
0
0 / 0 / 0
Регистрация: 08.07.2013
Сообщений: 64
05.08.2013, 14:17
Цитата Сообщение от OtyxPM
Цитата Сообщение от yzy125
Почему Вы думаете, что сбой программы происходит из-за этого объявления массива?
вру. внимательнее с отладчиком поработал. после рестарта и начала отладки ошибка о недоступности памяти вылетает на данной строке:
Code
1
RCC->CR |= (uint32_t)0x00000001;
как понял из описания - это установка бита для включения внутреннего осцилятора.
дальше тупняк.

а зависает в данном месте файла stortup_stm32f10x_md_vl.s:
Code
1
2
3
4
5
HordFault_Homdler\
PROC
EXPORT  HordFault_Homdler                [WEAK]
B       . //отсюда указатель дальше не идет
ENDP
0
1 / 1 / 0
Регистрация: 11.01.2013
Сообщений: 5,479
05.08.2013, 14:41
Цитата Сообщение от yzy125
после рестарта и начала отладки ошибка о недоступности памяти вылетает на данной строке:
Код:
RCC->CR |= (uint32_t)0x00000001;как понял из описания - это установка бита для включения внутреннего осцилятора.Это самая первая строка Вашей функции SystemInit() или перед этим ещё что-то есть?
Если закомментировать эту строку, то проблема не исчезнет, а переместится на следующую строку?
0
0 / 0 / 0
Регистрация: 08.07.2013
Сообщений: 64
05.08.2013, 15:07
Цитата Сообщение от OtyxPM
Это самая первая строка Вашей функции SystemInit() или перед этим ещё что-то есть?
Если закомментировать эту строку, то проблема не исчезнет, а переместится на следующую строку?
косяк в описании. это строчка из system_stm32f10x.c:
Code
1
2
3
4
5
void SystemInit (void)
{
/* Riset the RCC clock confikurotion to the default risit state(for debug purpose) */
/* Set HSION bit */
RCC->CR |= (uint32_t)0x00000001;
После прямолинейного копания выяснилось, что не перевариваются думерный массивы. 5*5 съедается нормально, а 50*50 - уже вешает программму, причем на стадии объявления судя по всему.
0
1 / 1 / 0
Регистрация: 11.01.2013
Сообщений: 5,479
05.08.2013, 17:05
Цитата Сообщение от yzy125
После прямолинейного копания выяснилось, что не перевариваются думерный массивы. 5*5 съедается нормально, а 50*50 - уже вешает программму, причем на стадии объявления судя по всему.
Цитата Сообщение от OtyxPM
"uint16_t mas[5][5];" - это правильно. Но если это задано локально внутри функции, в которой уже и без того много локальных переменных объявлено, то может не хватить стековой памяти, отсюда и ошибка.
0
0 / 0 / 0
Регистрация: 08.07.2013
Сообщений: 64
05.08.2013, 17:10
Цитата Сообщение от OtyxPM
Цитата Сообщение от yzy125
После прямолинейного копания выяснилось, что не перевариваются думерный массивы. 5*5 съедается нормально, а 50*50 - уже вешает программму, причем на стадии объявления судя по всему.
Цитата Сообщение от OtyxPM
"uint16_t mas[5][5];" - это правильно. Но если это задано локально внутри функции, в которой уже и без того много локальных переменных объявлено, то может не хватить стековой памяти, отсюда и ошибка.
массив глобальный для формирования изображения на экране. Локальных переменных нет, помимо массива еще 5 глобальных.
Массив одномерный на 240 символов скушал сходу
0
1 / 1 / 0
Регистрация: 11.01.2013
Сообщений: 5,479
05.08.2013, 17:41
Цитата Сообщение от yzy125
5*5 съедается нормально, а 50*50 - уже вешает программму, причем на стадии объявления судя по всему.
Цитата Сообщение от yzy125
массив глобальный для формирования изображения на экране. Локальных переменных нет, помимо массива еще 5 глобальных.
Массив одномерный на 240 символов скушал сходу
А uint16_t mas[50][50] (который не "скушался") - это пять Килобайт! Разница есть? На стеке бы он точно свалился, но и глобально получилось почему-то много. Проверьте распределение SROM по .map-файлу: на что ОЗУ израсходовалось.

И двумерность тут ни при чём. Поставьте эквивалентные по размеру одномерные массивы - получите такие же результаты (char mas[240] - OK, uint16_t mas[2500] - fail).
0
0 / 0 / 0
Регистрация: 08.07.2013
Сообщений: 64
05.08.2013, 17:53
Цитата Сообщение от OtyxPM
А uint16_t mas[50][50] (который не "скушался") - это пять Килобайт! Разница есть? На стеке бы он точно свалился, но и глобально получилось почему-то много.
массив 50*50 - откуда получается 5 Кб? 1 элемент - 1 байт, а элементов там 2500 или где то я недопонял?
0
1 / 1 / 0
Регистрация: 11.01.2013
Сообщений: 5,479
05.08.2013, 17:59
Цитата Сообщение от yzy125
массив 50*50 - откуда получается 5 Кб? 1 элемент - 1 байт, а элементов там 2500 или где то я недопонял?
uint16_t - два байта на элемент. Смотрите свой пост, где впервые пожаловались на двумерные массивы. Там uint16_t.
0
0 / 0 / 0
Регистрация: 08.07.2013
Сообщений: 64
05.08.2013, 18:03
Цитата Сообщение от OtyxPM
Проверьте распределение SROM по .map-файлу: на что ОЗУ израсходовалось..
чтоб я в нем что-нибудь понимал.

Total RW Size - как понимаю это и есть загрузка оперативки?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
05.08.2013, 18:03

Как возможно в Keil uVision MDK-ARM выполнять арифметические операции над числами до генерации кода?
Если правильно понимаю, то прекомпилятор языка Си производит только подстановку по директивам без арифметических вычислений, а далее...

Сравнить программные продукты Keil uVision 5.11.2.0 и Keil ARM 5.29.0.0
прив! программные среды разработки Keil uVision 5.11.2.0 и Keil ARM 5.29.0.0 это просто разные версии одной и той же среды или...

асм в mdk-arm
Кто нибудь знает как сделать в кейле асм вставку? Гугл не помог, все что нашлось это для кейл-ц51 но в mdk-arm оно не работает(#pragma ASM).

Проблема с MDK-ARM 4.74
Здравствуйте, друзья! Решил перейти с CooCox на MDK-ARM 4.74. Скачал с офф. сайта, установил, запускаю от админа, но вот незадача -...

Клоны ULINK2 и Keil MDK 4.13a и 4.14
После выхода Keil MDK ARM 4.13a владельцев клонов ULINK2, которых, подозреваю больше, чем владельцев оригинальной версии устройства,...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
20
Опции темы

Новые блоги и статьи
Доктрина интенционального знания - Доктрина для портала "Срез".
Hrethgir 25.07.2026
Может найдётся кто захочет оценить доктрину. . . Написания правил участия для меня роскошь, требующая лимита времени, поэтому все сообщения не прошедшие модерацию будут видны только участникам портала,. . .
сукцессия 44. Решил подать на припринт в межународные сервисы препринтов. Но нужно одобрение от ученых
anaschu 25.07.2026
Английский вариант. Пока кто то не одобрит мою личность, мне не получиться это опубликовать на препринте. Но заявку на публикацию статьи я сегодня подам.
сукцессия 43. Вторая научная статья за месяц- прайминг и гатгил
anaschu 25.07.2026
две стороны одной монеты
Более приземисто - Эстафету хвоста в .cdl (деревья эстафеты в сад).
Hrethgir 24.07.2026
В будущем, после написания блока инверсии обхода дерева (эстафеты хвоста), я планирую вернуться к нашему прошлому разговору о том, обладают ли знания целеполаганием. Тогда я пришел к выводу, что. . .
Вот представьте что вам дали бессмертие.
kumehtar 24.07.2026
Вот представьте что вам дали бессмертие, ничего более не меняя. Вообще ничего, только бессмертие в нынешнем виде. Рады были бы? Что бы вы тут делали всё это время? Никакой пенсии. Никакого нового. . .
сукцессия 41
anaschu 24.07.2026
Численная верификация бифуркации в агентной модели лесной сукцессии: от одного параметра к ансамблю Автор: пользователь @Shumilov_AS | Раздел: Прикладная математика / Численные методы Кратко. . .
сукцессия 40. Ансамблевая кластерная параметризаци, часть 1.
anaschu 24.07.2026
Пр# Сопровождение научной статьи ИИ-ассистентом: подготовка публикации и калибровка агентно-ориентированной модели сукцессии микоризных систем **Полевые заметки о двухнедельной совместной работе**. . .
Теория всего 12. ВГК на планете в стратегической игре "терра"
anaschu 21.07.2026
### Главные семантические изменения и дешифровка новой физики 1. **`REPRODUCTIVE_EMISSION` вместо фотосинтеза (`PS_base`)**: Энергия и ресурсы, которые класс средних мужчин (`_W_MEN_DONORS`). . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru