ARM STM32 F4 с чего начать?
|
|
ВитГо | Дата: Воскресенье, 02.03.2014, 21:08 | Сообщение # 31 |
Полковник
Группа: Администраторы
Сообщений: 2422
Статус: Offline
| Цитата uwrtey ( ) Ага, просто я решил проверить и такой способ написания то-же... Но что то у меня не пошло... в STM32 гораздо сложнее периферия, поэтому управляя ею побитово - наверняка ошибешься и фиг потом ошибку найдешь..
тут иногда все вроде правильно настраиваешь и не работает.. а если еще и мудрить в настройке - вообще ничего не заработает :-)
Виталий (аka ВитГо)
|
|
| |
uwrtey | Дата: Воскресенье, 02.03.2014, 21:27 | Сообщение # 32 |
Генерал-майор
Группа: Администраторы
Сообщений: 3300
Статус: Offline
| Цитата ВитГо ( ) у тебя где проект то лежит ?
создай на диске C папку Project не в каталоге кокоса !!
перезалил с интернета архив с проектом и вроде разобрался... все компилируется и прошивается. но плата не находит двойной клик. ( светодиод не мигает ) снова перепаял чип акселерометра, но увы - так и не заработало... где теперь ошибку искать? ( правда я мог перегреть микросхему - паял феном при 370 градусах по Цельсию )
Добавлено (02.03.2014, 21:27) --------------------------------------------- о-о еще нашел недостаток компонентов! не хватает R48 ( 0 Ом ??? ) но он вряд-ли решит проблему.
не успеваю за своими мыслями......
Сообщение отредактировал uwrtey - Воскресенье, 02.03.2014, 23:47 |
|
| |
ВитГо | Дата: Понедельник, 03.03.2014, 05:36 | Сообщение # 33 |
Полковник
Группа: Администраторы
Сообщений: 2422
Статус: Offline
| резистор на 0 ом это перемычка !! так что смотри какая цепь..
ты кстати схему включения смотрел ?
Виталий (аka ВитГо)
|
|
| |
uwrtey | Дата: Понедельник, 03.03.2014, 08:58 | Сообщение # 34 |
Генерал-майор
Группа: Администраторы
Сообщений: 3300
Статус: Offline
| конечно смотрел про перемычку я понял, просто ни разу на схемах не видел как она обозначается. эта перемычка стоит в цепи вывода PA4 ( в линии передачи аудио сигнала Audio_DAC_OUT ) Вот я и говорю, что даже если я ее установлю, то аксель все равно не заработает.
не успеваю за своими мыслями......
Сообщение отредактировал uwrtey - Понедельник, 03.03.2014, 09:02 |
|
| |
uwrtey | Дата: Понедельник, 03.03.2014, 20:22 | Сообщение # 35 |
Генерал-майор
Группа: Администраторы
Сообщений: 3300
Статус: Offline
| Наконец-то удалось заставить акселерометр работать - это оказалась плохая пайка ( я впервые паял в корпусе LGA14 ) При пайке таких корпусов нельзя использовать флюс! Он остается под микросхемой. А во время пайки кипит и сдвигает микросхему с контактных площадок.
При очередной попытке припаять микросхему так, что бы все "ножки" контачили одна из ее "ножек" отвалилась!
Я взял новый чип ( да, да я купил уже второй аксель ) и предварительно, как следует, залудил плату ( лудил с флюсом ) Потом я отмыл весь флюс. "Ножки" у микросхемы позолоченные - смекаете? Правильно! золото не окисляется, а значит лудить с флюсом такие ножки не нужно. И вот таким способом при температуре фена 350 градусов - мне удалось запаять микросхему акселерометра.
не успеваю за своими мыслями......
Сообщение отредактировал uwrtey - Понедельник, 03.03.2014, 20:22 |
|
| |
ВитГо | Дата: Вторник, 04.03.2014, 05:07 | Сообщение # 36 |
Полковник
Группа: Администраторы
Сообщений: 2422
Статус: Offline
| температура фена не великовата ?
с акселем - поздравляю !!!
код под кокосом запустил ?
Виталий (аka ВитГо)
|
|
| |
uwrtey | Дата: Среда, 05.03.2014, 00:10 | Сообщение # 37 |
Генерал-майор
Группа: Администраторы
Сообщений: 3300
Статус: Offline
| Если сделать температуру меньше, то припой не успевает расплавится, а вместо этого нагревается вся плата. И это всего лишь температура фена - температура в месте пайки намного меньше.
Да запустил под кокосом. Взял готовый проект вот от сюда ( третий вариант ) В первый раз что то пошло не так... Не знаю что.. Удалил и скачал снова и все заработало.
Добавлено (05.03.2014, 00:10) --------------------------------------------- Хочу вернуться к вопросу о непонятности написания кода....
Когда я только начал вникать в структуру написания кода на ассемблере для АВР, то мне очень помогла обучалка на радиокоте ( хоть и написана с кучей ошибок ) и Справка по Ассемблеру для Atmel AVR а так-же выручал сайт со справкой об системе команд АВР А так-жи Ты (ВитГо) внес огромную лепту в мое образование... ( Поклон в пол ) Есть ли что-то подобное по языку СИ для ARM ? Просто где бы я ни читал, все везде пишут по разному
Вот например код которым я включил светодиод на плате: Код // Подключаем заголовки #include "stm32f4xx.h" #include "stm32f4xx_gpio.h" #include "stm32f4xx_rcc.h"
// Функция программной задержки void Soft_Delay(volatile uint32_t number) { while(number--); }
int main(void) { // Следующая строка для нас пока что магическая RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOD, ENABLE);
// Настраиваем порты GPIO_InitTypeDef ledinit; // создаем структуру
ledinit.GPIO_Mode = GPIO_Mode_OUT; // направление - выход ledinit.GPIO_OType = GPIO_OType_PP; // Двухтактный выход ledinit.GPIO_PuPd = GPIO_PuPd_NOPULL; // Без подтяжки ledinit.GPIO_Speed = GPIO_Speed_2MHz; // Скорость низкая ledinit.GPIO_Pin = (GPIO_Pin_12 | GPIO_Pin_13); // Светодиод LD3 на 12 и 13-ом выводе
GPIO_Init(GPIOD, &ledinit); // Функция, выполняющая настройку портов
// Бесконечный цикл while(1) { // Включаем светодиод GPIO_SetBits(GPIOD, GPIO_Pin_12 | GPIO_Pin_13);
} }
Вот еще пример, но он у меня так и не заработал.. Этот код, по идее должен сделать то-же самое, что и предыдущий, но написание очень сильно отличается...
Код #include "stm32f4xx_rcc.h"
int main(void) {
RCC->APB2ENR |= RCC_APB2Periph_GPIOD; // включаем тактирование порта "D"
GPIOD->CRH |=0x00330000; // настраиваем порт GPIOD->CRH &=0xFF33FFFF;
GPIOD->ODR |=(GPIO_ODR_ODR12|GPIO_ODR_ODR13); // выводим сигнал на PD12 и PD13 } Дак вот, если я буду пользоваться только учебником по СИ, то я все равно не пойму как применить этот язык к конкретному типу МК.
Вот собственно я и подобрался к вопросу. ( с вашего позволения разобью его на пункты )
1) Что нужно почитать что-бы понять как применить знание языка к конкретному МК ?
2) И как нужно правильно писАть? ( Как в пером примере? Или как во втором? И сколько в обще существует способов? ) Или второй способ это смесь СИ и Ассемблера ?
3) И можно-ли в обще делать вставки на Ассемблере, если основная часть кода написана на СИ ?
не успеваю за своими мыслями......
Сообщение отредактировал uwrtey - Среда, 05.03.2014, 00:16 |
|
| |
ВитГо | Дата: Среда, 05.03.2014, 17:52 | Сообщение # 38 |
Полковник
Группа: Администраторы
Сообщений: 2422
Статус: Offline
| по коду
просто то что ты привел вначале - это использование процедур SPL (стандартная библиотека периферии)
то что ниже - это управление периферией напрямую записью в порты..
в принципе SPL делает тоже самое (записывает в порты) просто пишется более понятно...
ни в каком учебнике по СИ не будет описания регистров или функций SPL - это уже зависит от чипа и библиотек..
на счет того как правильно писать - я пишу с использованием SPL - быстродействие на самом деле страдает не сильно, но понятность кода и безошибочность написания возрастают многократно
вставки можно на асме писать.. но ты уверен что это тебе нужно ?
Виталий (аka ВитГо)
|
|
| |
Sergi | Дата: Среда, 05.03.2014, 21:15 | Сообщение # 39 |
Подполковник
Группа: Проверенные
Сообщений: 540
Статус: Offline
| Мне SPL не понравилась. Поэтому пишу в регистры как в даташите. Имена одинаковые. В CMSIS прописаны дефайны и текст получается довольно наглядным. Если присваивать цифровые константы, можно, действительно, запутаться.
|
|
| |
uwrtey | Дата: Среда, 05.03.2014, 22:55 | Сообщение # 40 |
Генерал-майор
Группа: Администраторы
Сообщений: 3300
Статус: Offline
| для себя: 1) http://mcustep.ru/init....ii.html 2) http://nis-embedded.blogspot.ru/2013....-1.html
не успеваю за своими мыслями......
Сообщение отредактировал uwrtey - Среда, 05.03.2014, 23:15 |
|
| |
uwrtey | Дата: Суббота, 08.03.2014, 22:30 | Сообщение # 41 |
Генерал-майор
Группа: Администраторы
Сообщений: 3300
Статус: Offline
| Блин, уже башка пухнет! Ни чего не понимаю. Где нужно смотреть команды SPL ?
например: открываю справочное руководство на станице 279 GPIO port output type register (GPIOx_OTYPER) там таблица и приписка к ней: These bits are written by software to configure the output type of the I/O port. 0: Output push-pull (reset state) 1: Output open-drain
а в коде это выглядит вот так ledinit.GPIO_OType = GPIO_OType_PP; // Двухтактный выход
во первых GPIOx_OTYPER записывается без буквы "R", во вторых присваивается не цифровое значение, а в виде букв "PP"
У меня закралось подозрение, что у меня не хватает какого-то справочного материала. В котором была бы система команд для SPL.... Где я должен глядеть как настраивать порты/ таймеры/ АЦП и т.д.
с ассемблером "в изучении" все было в разы проще.
Добавлено (08.03.2014, 22:30) --------------------------------------------- материал который я ищу, это случайно не stm32f4xx_dsp_stdperiph_lib_um.chm ????
не успеваю за своими мыслями......
Сообщение отредактировал uwrtey - Суббота, 08.03.2014, 22:30 |
|
| |
Sergi | Дата: Суббота, 08.03.2014, 23:10 | Сообщение # 42 |
Подполковник
Группа: Проверенные
Сообщений: 540
Статус: Offline
| Вот потому что нужно знать учебник по SPL, я ее и не использую .
|
|
| |
uwrtey | Дата: Суббота, 08.03.2014, 23:17 | Сообщение # 43 |
Генерал-майор
Группа: Администраторы
Сообщений: 3300
Статус: Offline
| где взять то такой учебник? задублировал вопрос на радиокоте http://radiokot.ru/forum....1945319
не успеваю за своими мыслями......
Сообщение отредактировал uwrtey - Воскресенье, 09.03.2014, 18:41 |
|
| |
ВитГо | Дата: Воскресенье, 09.03.2014, 20:57 | Сообщение # 44 |
Полковник
Группа: Администраторы
Сообщений: 2422
Статус: Offline
| по SPL открывай соответствующий файл с расширением .h и смотри там объявления ! в принципе особых подсказок будет и не нужно - там и константы все расписаны, и функции..
// примечание от UWRTEY: файл в данном случае - stm32f4xx_gpio.h
Виталий (аka ВитГо)
|
|
| |
uwrtey | Дата: Воскресенье, 09.03.2014, 22:24 | Сообщение # 45 |
Генерал-майор
Группа: Администраторы
Сообщений: 3300
Статус: Offline
| а-а.. ясно, немного стало проясняться
не успеваю за своими мыслями......
Сообщение отредактировал uwrtey - Понедельник, 10.03.2014, 06:58 |
|
| |