Кто любит RISC в жизни, заходим, не стесняемся.
Пт ноя 23, 2018 00:21:32
Извиняюсь за откровенно нубовские вопросы, просто как-то не приходилось особо пользоваться сторонними функциями.
Спойлер
Попробовал вставить такой чит в свой код, не забыв при этом приинклудить сам *.с файл.
Спойлер
#include "stm32f10x.h"
#include "system_stm32f10x.c"
void delay_(uint32_t Wot)
{
uint32_t i;
for (i=0; i<Wot; i++){}
}
int main(void)
{
int32_t tmp=0;
_Bool dir=1;
SetSysClockTo48();
// Выставляем тактирование в APB2
RCC->APB2ENR |= RCC_APB2ENR_IOPCEN;
// Конфигурируем CRL регистры.
GPIOC->CRH &= ~GPIO_CRH_CNF13; // Сбрасываем биты CNF для бита 13. Режим 00 - Push-Pull
GPIOC->CRH |= GPIO_CRH_MODE13_0; // Выставляем бит MODE0 для 13 пина. Режим MODE01 = Max Speed 10MHz
while (1)
{
GPIOC->ODR &= ~GPIO_ODR_ODR13; // Выводим 0 на PC13
delay_ (4000-tmp);
GPIOC->ODR |= GPIO_ODR_ODR13; // Выводим 1 на PC13
delay_ (tmp);
if (dir) {tmp++; if (tmp>=4000) dir=0;}
else {tmp--; if (tmp<=0) dir=1;}
}
}Но вот незадача, при попытке компиляции выдаёт 4 ошибки.
Спойлер
Что я делаю не так?
- Вложения
-
- Err4.png
- (21.24 KiB) Скачиваний: 723
-
- Sys_stm32.png
- (15.68 KiB) Скачиваний: 951
Пт ноя 23, 2018 00:42:27
Что я делаю не так?
Никогда не инклудь *.c файлы, они добавляются в проект.
Пт ноя 23, 2018 19:51:45
Так всё же, как пользоваться этими функциями? Можете показать на примере? Этож крутейшая вещь, вместо того чтобы разбираться какие регистры за что отвечают и какие биты в них засылать, вызываешь функцию, которая всё делает сама.
Пт ноя 23, 2018 20:11:39
Nicochip писал(а):как пользоваться этими функциями?
В файле system_stm32f10x.c есть строки.
- Код:
/* #define SYSCLK_FREQ_HSE HSE_VALUE */
/* #define SYSCLK_FREQ_24MHz 24000000 */
/* #define SYSCLK_FREQ_36MHz 36000000 */
/* #define SYSCLK_FREQ_48MHz 48000000 */
/* #define SYSCLK_FREQ_56MHz 56000000 */
#define SYSCLK_FREQ_72MHz 72000000
Нужно раскомментировать ту строку, какая частота нужна.
Пт ноя 23, 2018 20:45:44
Так всё же, как пользоваться этими функциями? Этож крутейшая вещь, вместо того чтобы разбираться какие регистры за что отвечают и какие биты в них засылать, вызываешь функцию, которая всё делает сама.
Функций не сильно меньше и они, не сказать, чтобы совсем уж проще. Делая выбор в пользу функций, вы отказываетесь в значительной мере от контакта с реальным железом и начинаете изучать некие нематериальные абстракции, придуманные неизвестными индусами. Печаль в таком подходе заключается еще и в том, что индусы свои абстракции могут и "перепридумать", как, например, было в случае отказа от SPL в пользу HAL. Т.е. в один прекрасный момент все функции, которые к тому времени вы изучили и привыкли использовать, вдруг признаются устаревшими и вам предлагается либо изучить новые библиотеки, либо отказаться от использования новых продуктов, которые старыми библиотеками не поддерживаются.
Сб ноя 24, 2018 10:31:10
Мурик, спасибо, попробую.
a5021, на то и были разработаны языки высокого уровня, чтобы иметь как можно меньше "контактов" со всеми маразмами реального железа. Кто хочет "контактов", тот пишет на Асме. Хотя, есть у меня один знакомый, который даже Асм не признаёт, а только машинные коды. Тут уж, как говорится, на вкус и цвет, каждый сходит с ума по своему.
Пн ноя 26, 2018 23:09:11
Не подскажете, где можно почитать об использовании CMSIS на доступном русском с подробными примерами? Или этот набор библиотек уже не актуален?
Вт ноя 27, 2018 00:57:03
cmsis - библиотека для работы с кортексом, фундамент для spl,hal,
для меня, лучшая документация к cmisis - ето "Reference manual" к МК хоть и на английском
Вс дек 09, 2018 09:27:17
Добрый день, тоже начал изучать stm32. Сейчас мучаю камень STM32f030k6 (32 ноги). Для простоты использую CubeMX и их либу HAL. Так вот Куб при выборе вкладки АЦП предлагает настроить только 10 каналов АЦП (IN0-IN9) в режим ADC. Но на других ножках есть возможность включения режима Analog Input (GPIO Analog). Если не ошибаюсь, то этот режим должен подключать данную ножку к АЦП МК. Но как настроить ее в таком режиме? При включении этого режима, появляется такая инициализация
Спойлер
- Код:
/*Configure GPIO pin : PB3 */
GPIO_InitStruct.Pin = GPIO_PIN_3;
GPIO_InitStruct.Mode = GPIO_MODE_ANALOG;
GPIO_InitStruct.Pull = GPIO_NOPULL;
А как дальше с ней работать? Я должен указывать ее, как канал при настройке АЦП
Спойлер
- Код:
/**Configure for the selected ADC regular channel to be converted.
*/
sConfig.Channel = ADC_CHANNEL_6;
sConfig.Rank = ADC_RANK_CHANNEL_NUMBER;
sConfig.SamplingTime = ADC_SAMPLETIME_13CYCLES_5;
if (HAL_ADC_ConfigChannel(&hadc, &sConfig) != HAL_OK)
{
Error_Handler();
}
/**Configure for the selected ADC regular channel to be converted.
*/
sConfig.Channel = ADC_CHANNEL_7;
if (HAL_ADC_ConfigChannel(&hadc, &sConfig) != HAL_OK)
{
Error_Handler();
}
Или вызывать ее функцией HAL_GPIO_ReadPin? Просто в файле adc.h есть еще и такая запись
Спойлер
- Код:
/**
* @brief Configure the channel number into channel selection register
* @param _CHANNEL_ ADC Channel
* @retval None
*//* This function converts ADC channels from numbers (see defgroup ADC_channels)
to bitfields, to get the equivalence of CMSIS channels:
ADC_CHANNEL_0 ((uint32_t) ADC_CHSELR_CHSEL0)
ADC_CHANNEL_1 ((uint32_t) ADC_CHSELR_CHSEL1)
ADC_CHANNEL_2 ((uint32_t) ADC_CHSELR_CHSEL2)
ADC_CHANNEL_3 ((uint32_t) ADC_CHSELR_CHSEL3)
ADC_CHANNEL_4 ((uint32_t) ADC_CHSELR_CHSEL4)
ADC_CHANNEL_5 ((uint32_t) ADC_CHSELR_CHSEL5)
ADC_CHANNEL_6 ((uint32_t) ADC_CHSELR_CHSEL6)
ADC_CHANNEL_7 ((uint32_t) ADC_CHSELR_CHSEL7)
ADC_CHANNEL_8 ((uint32_t) ADC_CHSELR_CHSEL8)
ADC_CHANNEL_9 ((uint32_t) ADC_CHSELR_CHSEL9)
ADC_CHANNEL_10 ((uint32_t) ADC_CHSELR_CHSEL10)
ADC_CHANNEL_11 ((uint32_t) ADC_CHSELR_CHSEL11)
ADC_CHANNEL_12 ((uint32_t) ADC_CHSELR_CHSEL12)
ADC_CHANNEL_13 ((uint32_t) ADC_CHSELR_CHSEL13)
ADC_CHANNEL_14 ((uint32_t) ADC_CHSELR_CHSEL14)
ADC_CHANNEL_15 ((uint32_t) ADC_CHSELR_CHSEL15)
ADC_CHANNEL_16 ((uint32_t) ADC_CHSELR_CHSEL16)
ADC_CHANNEL_17 ((uint32_t) ADC_CHSELR_CHSEL17)
ADC_CHANNEL_18 ((uint32_t) ADC_CHSELR_CHSEL18)
*/
Первые 10 каналов соответствует тем, что позволяет настроить Куб в режиме АЦП (IN0-IN9), а с остальными 9 каналами как работать? Спасибо.
Спойлер
Спойлер
Вс дек 09, 2018 12:20:16
Добрый день, тоже начал изучать stm32. Сейчас мучаю камень STM32f030k6 (32 ноги). Для простоты использую CubeMX и их либу HAL. Так вот Куб при выборе вкладки АЦП предлагает настроить только 10 каналов АЦП (IN0-IN9) в режим ADC.
Не хотите поинтересоваться, сколько этих каналов вообще у данного чипа? Типа, совершить интеллектуальный подвиг и прочесть хотя бы первую страницу даташита? Там глядишь и вопрос про "только" отпадет сам собой.
Вс дек 09, 2018 12:34:58
a5021 @One 12-bit, 1.0 μs ADC (up to 16 channels). Я не понимаю, ноги в режиме GPIO_Analog можно задействовать в качестве АЦП или нет?
Вс дек 09, 2018 13:34:29
Если с выводом нет связанного канала АЦП, то нет. GPIO_Analog означает что от вывода отключены цифровой вход и выход.
Вс дек 09, 2018 13:51:21
Мурик Спасибо, теперь все вроде бы встало на свои места. Увы, значит не получится, использовать АЦП на других ножках.
Вт дек 18, 2018 16:58:01
Здравствуйте, начал изучать STM32, да и программирование в целом. Ну как начал, установил Keil, взял пример , которым поделился VladislavS ,на предыдущей странице. Всё прошилось на китайскую плату, всё мигает. Далее я попытался сам хотябы собрать проект с нуля, тут меня ждал провал)) создал через вкладку новый проект попробовал вбить теже строки автора, собрал нажал CTRL+F5 и ошибка Error: Flash Download failed - Could not load file 'D:\STM32\1\Objects\1.axf' . Есть ли алгоритм создания голого проекта (скелета), в ТыТруба много видео но от них можно кони двинуть. Разъясните знающие люди если не сложно.
Вт дек 18, 2018 17:20:03
Возьмите EmBitz. Создать проект в нем намного проще.
http://purebasic.mybb.ru/viewtopic.php?id=575Релизная прошивка заливается через "STM32 ST-LINK Utility" или можно добавить инструмент в IDE.
http://forum.easyelectronics.ru/viewtop ... 66#p463866Отладка программы.
http://purebasic.mybb.ru/viewtopic.php?id=564
Вт дек 18, 2018 18:12:06
Brewer911,
http://mcu.goodboard.ru/viewtopic.php?id=15Мурик, где-то в вопросе просящего есть твой эмобитс???
Ты становишся весьма навязчивым , этаким попугаем...
Последний раз редактировалось
dosikus Вт дек 18, 2018 18:40:18, всего редактировалось 1 раз.
Вт дек 18, 2018 18:29:55
начал изучать STM32, да и программирование в целом ... в ТыТруба много видео
разберись с собственно "программированием" для начала. Чо и как работает, что это все за файлы такие .h/.c, чего компилятор делает и что он иногда полезного говорит. И никакого ютуба, читаем и думаем.
или, если не терпится, ардуину возьми.
Вт дек 18, 2018 18:45:03
Всем откликнувшимся спасибо.
arkhnchul А ссылки на чтиво не дадите?
Вт дек 18, 2018 19:41:53
вот, например, обзорно -
https://www.oreilly.com/library/view/pr ... /ch04.htmlтам рассматривают gcc, но это совершено пофиг - компиляторы C так работают примерно все. И когда нажимаются кнопочки в IDE, процеммы происходят те же самые.
просто сейчас вопрос из серии "компьютер мне чото пишет, а чего это оно?". Но уже при базовом понимании понятно, что он (предположу, что на этом этапе - линкер) не может найти объектник, который должен перед этим собрать собственно компилятор. Два варианта - либо файл ищется не в том месте (лезем смотреть настройки сборки проекта), либо - что куда более вероятно - он просто не собрался, потому что... А это нам должен был сказать компилятор, вывод ошибок которого походу дела кто-то не читал)
Вт дек 18, 2018 20:48:10
В такие моменты ясно понимаешь , что зря не учил английский
Powered by phpBB © phpBB Group.
phpBB Mobile / SEO by Artodia.