Stm32 с чего начать изучение...
- Oxford
- Опытный кот
- Сообщения: 819
- Зарегистрирован: Вт окт 23, 2012 13:17:25
- Откуда: Прокопьевск
- Контактная информация:
Re: Stm32 с чего начать изучение...
Nicochip, если нужны курсы по программированию пиши в личку.
Инженер R@D
Telegram чат: https://t.me/radiowolf или в поиске приложения @radiowolf. Личка:@cncoxford
Telegram чат: https://t.me/radiowolf или в поиске приложения @radiowolf. Личка:@cncoxford
- VladislavS
- Собутыльник Кота
- Сообщения: 2562
- Зарегистрирован: Вт май 01, 2018 19:44:47
Re: Stm32 с чего начать изучение...
Nicochip, раздобыл ST-Link, попробовал на нём. Чудес не бывает, и тот проект что я выше выложил и тот что в этом посте мигают аки новогодняя ёлка. Открываешь проект, нажимаешь F7 - проект компилируется. Нажимаешь Ctrl-F5 - проект прошивается. Если не работает, то что-то у тебя с железом. Пожалуй, главное и единственное достоинство Keil, что у него всё "искаропки" работает. Никакой "куб" тут ничего не изменит. Для хейтеров упростил проект донельзя. Но для развития первый будет правильней.

Новичку, который хочет разобраться с железом, рекомендовать дрыгать ногой с помощью GPIO->CHR это фиаско, братан. 
Спойлер
[uquote="a5021",url="/forum/viewtopic.php?p=3509219#p3509219"]Минимум телодвижений, минимум писанины.[/uquote]И эти люди запрещают мне ковырять в носу
- Вложения
-
- blink.png
- (36.68 КБ) 1267 скачиваний
Последний раз редактировалось VladislavS Ср ноя 21, 2018 08:06:32, всего редактировалось 2 раза.
Re: Stm32 с чего начать изучение...
А у меня 2 вопроса
как прошивал Nicochip свою таблетку в аурдунье и в каком положении джамперы на таблетке...
как прошивал Nicochip свою таблетку в аурдунье и в каком положении джамперы на таблетке...
- VladislavS
- Собутыльник Кота
- Сообщения: 2562
- Зарегистрирован: Вт май 01, 2018 19:44:47
Re: Stm32 с чего начать изучение...
dosikus, второй вопрос, похоже, в точку! Искать нужно всегда на самом видном месте.
Re: Stm32 с чего начать изучение...
Nicochip писал(а):Да, у меня не получается создать рабочий проект, который мне нужен в качестве шаблона, чтобы зацепиться за эту тему пока я сам не вдуплюсь что к чему и как это настраивать. Пока что я два дня словно бьюсь башкой о непробиваемую стену и это сильно демотивирует.
Если я вас правильно понял, видео этого парня Вам помогут создать рабочий проект в Keil.
https://www.youtube.com/watch?v=6bsvxxR ... Vv0ic24jqV
- Oxford
- Опытный кот
- Сообщения: 819
- Зарегистрирован: Вт окт 23, 2012 13:17:25
- Откуда: Прокопьевск
- Контактная информация:
Re: Stm32 с чего начать изучение...
[uquote="VladislavS",url="/forum/viewtopic.php?p=3509300#p3509300"]Открываешь проект, нажимаешь F7 - проект компилируется. Нажимаешь Ctrl-F5 - проект прошивается.[/uquote]
Ctrl+F5 это запуск/остановка сессии отладки.
Загрузка программы делается через F8
Ctrl+F5 это запуск/остановка сессии отладки.
Загрузка программы делается через F8
Инженер R@D
Telegram чат: https://t.me/radiowolf или в поиске приложения @radiowolf. Личка:@cncoxford
Telegram чат: https://t.me/radiowolf или в поиске приложения @radiowolf. Личка:@cncoxford
Re: Stm32 с чего начать изучение...
VladislavS, спасибо за проект. Да и всем спасибо за помощь.
Теперь объясните, пожалуйста, что это за команды?
SysTick->LOAD = HSI_VALUE/4-1;
SysTick->CTRL = SysTick_CTRL_CLKSOURCE_Msk | SysTick_CTRL_TICKINT_Msk | SysTick_CTRL_ENABLE_Msk;
Да и вообще, что означает эта мнемоника "->"? Это часть имени переменных типа GPIOC->CRH, или у неё есть определённое значение, обозначающее какие-то действия над GPIOC и CRH?
Это, пожалуй, вопрос дня! Тут вот что выяснилось. Всё это время перемычка BOOT0 была в положении "1", поскольку при "0" Ардуиньё отказывалось видеть таблетку. Переставил в "0", жмакнул ресет и всё заморгало! Чуть подправил код, пересобрал, прошил и да, всё работает.dosikus писал(а):А у меня 2 вопроса как прошивал Nicochip свою таблетку в аурдунье и в каком положении джамперы на таблетке...
Теперь объясните, пожалуйста, что это за команды?
SysTick->LOAD = HSI_VALUE/4-1;
SysTick->CTRL = SysTick_CTRL_CLKSOURCE_Msk | SysTick_CTRL_TICKINT_Msk | SysTick_CTRL_ENABLE_Msk;
Да и вообще, что означает эта мнемоника "->"? Это часть имени переменных типа GPIOC->CRH, или у неё есть определённое значение, обозначающее какие-то действия над GPIOC и CRH?
Всё самое свежее по проекту "Дозиметр Сталкера" ищите здесь.
Re: Stm32 с чего начать изучение...
"->" выбирает указанный элемент структуры.
SysTick состоит из элементов, мы вытаскиваем нужный и работаем с ним.
SysTick состоит из элементов, мы вытаскиваем нужный и работаем с ним.
Глупый не задает вопросы. Глупый и так все знает.
- VladislavS
- Собутыльник Кота
- Сообщения: 2562
- Зарегистрирован: Вт май 01, 2018 19:44:47
Re: Stm32 с чего начать изучение...
[uquote="Nicochip",url="/forum/viewtopic.php?p=3509603#p3509603"]Всё это время перемычка BOOT0 была в положении "1",[/uquote]dosikus плюс в карму 
[uquote="Nicochip",url="/forum/viewtopic.php?p=3509603#p3509603"]Теперь объясните, пожалуйста, что это за команды?
SysTick->LOAD = HSI_VALUE/4-1;
SysTick->CTRL = SysTick_CTRL_CLKSOURCE_Msk | SysTick_CTRL_TICKINT_Msk | SysTick_CTRL_ENABLE_Msk;[/uquote]В ядре Cortex-M есть устройство "системный таймер". Первой командой задаётся делитель частоты. Второй он включается и разрешаются прерывания от него. Описания этого таймера нет в RM. Про другие фишки кортексов типа VTOR и прочих НАДО почитать в Cortex-M Programming Manual. Знать их чаще всего обязательно.
[uquote="Nicochip",url="/forum/viewtopic.php?p=3509603#p3509603"]Да и вообще, что означает эта мнемоника "->"? Это часть имени переменных типа GPIOC->CRH, или у неё есть определённое значение, обозначающее какие-то действия над GPIOC и CRH?[/uquote]GPIOC это адрес структуры типа GPIO_TypeDef. CRH это элемент структуры. GPIOC->CRH это доступ к элементу структуры по её адресу. То же самое что и *GPIOC.CRH. Во всех заголовочных файлах регистры периферии сгруппированы в структуры по назначению. USART1, I2C1 и т.д. Доступ к регистрам происходит через адреса этих структур. USART1->DR или I2C1->DR и т.д.
[uquote="Nicochip",url="/forum/viewtopic.php?p=3509603#p3509603"]Теперь объясните, пожалуйста, что это за команды?
SysTick->LOAD = HSI_VALUE/4-1;
SysTick->CTRL = SysTick_CTRL_CLKSOURCE_Msk | SysTick_CTRL_TICKINT_Msk | SysTick_CTRL_ENABLE_Msk;[/uquote]В ядре Cortex-M есть устройство "системный таймер". Первой командой задаётся делитель частоты. Второй он включается и разрешаются прерывания от него. Описания этого таймера нет в RM. Про другие фишки кортексов типа VTOR и прочих НАДО почитать в Cortex-M Programming Manual. Знать их чаще всего обязательно.
[uquote="Nicochip",url="/forum/viewtopic.php?p=3509603#p3509603"]Да и вообще, что означает эта мнемоника "->"? Это часть имени переменных типа GPIOC->CRH, или у неё есть определённое значение, обозначающее какие-то действия над GPIOC и CRH?[/uquote]GPIOC это адрес структуры типа GPIO_TypeDef. CRH это элемент структуры. GPIOC->CRH это доступ к элементу структуры по её адресу. То же самое что и *GPIOC.CRH. Во всех заголовочных файлах регистры периферии сгруппированы в структуры по назначению. USART1, I2C1 и т.д. Доступ к регистрам происходит через адреса этих структур. USART1->DR или I2C1->DR и т.д.
Код: Выделить всё
typedef struct
{
__IO uint32_t CRL;
__IO uint32_t CRH;
__IO uint32_t IDR;
__IO uint32_t ODR;
__IO uint32_t BSRR;
__IO uint32_t BRR;
__IO uint32_t LCKR;
} GPIO_TypeDef;
#define GPIOC ((GPIO_TypeDef *) GPIOC_BASE)
Последний раз редактировалось VladislavS Ср ноя 21, 2018 15:56:30, всего редактировалось 1 раз.
Re: Stm32 с чего начать изучение...
[uquote="VladislavS",url="/forum/viewtopic.php?p=3509300#p3509300"]дрыгать ногой с помощью GPIO->CHR это фиаско[/uquote]
Причину своей категоричности с технической точки зрения сможете объяснить?
Причину своей категоричности с технической точки зрения сможете объяснить?
Re: Stm32 с чего начать изучение...
[uquote="VladislavS",url="/forum/viewtopic.php?p=3509621#p3509621"]GPIOC это адрес структуры типа GPIO_TypeDef. CRH это элемент структуры. GPIOC->CRH это доступ к элементу структуры по её адресу. То же самое что и *GPIOC.CRH.[/uquote]*GPIOC.CRH Keil не понимает. Дайте, пожалуйста, ссылку, где можно подробно почитать об этих структурах, из каких файлов заголовков их брать и как использовать.
Всё самое свежее по проекту "Дозиметр Сталкера" ищите здесь.
Re: Stm32 с чего начать изучение...
[uquote="Nicochip",url="/forum/viewtopic.php?p=3509670#p3509670"]*GPIOC.CRH Keil не понимает.[/uquote]
Да потому, что фигню он сказал, как обычно. Правильной и наглядной будет запись вида:
Да потому, что фигню он сказал, как обычно. Правильной и наглядной будет запись вида:
Код: Выделить всё
#define PORTC (*GPIOC)
PORTC.CRH ^= GPIO_CRH_MODE13_0;
Re: Stm32 с чего начать изучение...
Вот бы привести к виду
PORTC.13 ^= 1;

PORTC.13 ^= 1;
Всё самое свежее по проекту "Дозиметр Сталкера" ищите здесь.
Re: Stm32 с чего начать изучение...
Легко. За исключением, что имя поля структуры не может начинаться с цифры.
Код: Выделить всё
typedef struct {
uint32_t PIN0 : 1;
uint32_t PIN1 : 1;
uint32_t PIN2 : 1;
uint32_t PIN3 : 1;
uint32_t PIN4 : 1;
uint32_t PIN5 : 1;
uint32_t PIN6 : 1;
uint32_t PIN7 : 1;
uint32_t PIN8 : 1;
uint32_t PIN9 : 1;
uint32_t PIN10 : 1;
uint32_t PIN11 : 1;
uint32_t PIN12 : 1;
uint32_t PIN13 : 1;
uint32_t PIN14 : 1;
uint32_t PIN15 : 1;
} PORT_X_t;
#define PORTC (*(PORT_X_t*)&GPIOC->ODR)
PORTC.PIN13 ^= 1;
Re: Stm32 с чего начать изучение...
Не знаю, я ни привыкал, ни отвыкал. Так, пользую по мере целесообразности иногда. Из достоинств -- код получается чуть более наглядный. Из недостатков -- компилятор часто варит более громоздкий код.
- VladislavS
- Собутыльник Кота
- Сообщения: 2562
- Зарегистрирован: Вт май 01, 2018 19:44:47
Re: Stm32 с чего начать изучение...
[uquote="Nicochip",url="/forum/viewtopic.php?p=3509670#p3509670"]*GPIOC.CRH Keil не понимает.[/uquote](*GPIOC).CRH
[uquote="a5021",url="/forum/viewtopic.php?p=3509623#p3509623"]Причину своей категоричности с технической точки зрения сможете объяснить?[/uquote]
А я вообще-то и показать могу.


Добавлено after 26 minutes 20 seconds:
[uquote="dosikus",url="/forum/viewtopic.php?p=3509759#p3509759"]А к битовым полям легко привыкнуть, отвыкать трудно...[/uquote]
А не надо к ним привыкать. Лучше к плюсам привыкнуть.
[uquote="a5021",url="/forum/viewtopic.php?p=3509623#p3509623"]Причину своей категоричности с технической точки зрения сможете объяснить?[/uquote]
А я вообще-то и показать могу.
Код: Выделить всё
for(;;)
{
GPIOC->BSRR = GPIO_BSRR_BS13;
GPIOC->BRR = GPIO_BRR_BR13;
};
Код: Выделить всё
for(;;)
{
GPIOC->CRH ^= GPIO_CRH_MODE13;
};
Добавлено after 26 minutes 20 seconds:
[uquote="dosikus",url="/forum/viewtopic.php?p=3509759#p3509759"]А к битовым полям легко привыкнуть, отвыкать трудно...[/uquote]
А не надо к ним привыкать. Лучше к плюсам привыкнуть.
Код: Выделить всё
extern "C" void SysTick_Handler(void)
{
IOPORTS::PC_13 LED;
LED = !LED;
}
// 18 extern "C" void SysTick_Handler(void)
// 19 {
// 20 IOPORTS::PC_13 LED;
// 21 LED = !LED;
SysTick_Handler:
LDR.N R0,??DataTable1 ;; 0x40011008
LDR R2,[R0, #+0]
LSLS R2,R2,#+18
MOV R1,#+8192
BMI.N ??SysTick_Handler_0
STR R1,[R0, #+8]
BX LR
??SysTick_Handler_0:
STR R1,[R0, #+12]
// 22 }
BX LR ;; return
- Вложения
-
- DS2_2018112119340.png
- (28.59 КБ) 1113 скачиваний
-
- DS2_20181121193434.png
- (37.17 КБ) 1085 скачиваний
Re: Stm32 с чего начать изучение...
VladislavS, нафиг нафиг. Вы уж лучше сами, как показала практика, эксперды плюсов способны только на софтовый ногодрыг, каких либо преимуществ в работе с периферией стм32 ни один эксперд так и не доказал...
Re: Stm32 с чего начать изучение...
[uquote="VladislavS",url="/forum/viewtopic.php?p=3509788#p3509788"]А я вообще-то и показать могу.[/uquote]
Показали вы блинк на частоте 2.77мгц. Разве публиковавшийся здесь код генерировал такие частоты? Вы просто подменили условия и реализацию обсуждавшейся здесь задачи. В чем смысл, кроме того, что столь неуклюже вы пытаетесь соскочить с неудобной темы?
STMicro об этом скорее расскажите. А то они без вас все никак не привыкнут.
Неизвестно, чего у нашего фокусника не получалось больше -- то ли вообще листинг от кейла получить, то ли листинг выглядевший прилично. В общем, поступил он в свойственной ему манере -- подменили листинг кейла листингом иара.
Кейл. То же самое, но без плюсов, прерываний и прочей бесполезной фигни:
Показали вы блинк на частоте 2.77мгц. Разве публиковавшийся здесь код генерировал такие частоты? Вы просто подменили условия и реализацию обсуждавшейся здесь задачи. В чем смысл, кроме того, что столь неуклюже вы пытаетесь соскочить с неудобной темы?
А не надо к ним привыкать. Лучше к плюсам привыкнуть.
STMicro об этом скорее расскажите. А то они без вас все никак не привыкнут.
Код: Выделить всё
// 18 extern "C" void SysTick_Handler(void)
// 19 {
// 20 IOPORTS::PC_13 LED;
// 21 LED = !LED;
SysTick_Handler:
LDR.N R0,??DataTable1 ;; 0x40011008
LDR R2,[R0, #+0]
LSLS R2,R2,#+18
MOV R1,#+8192
BMI.N ??SysTick_Handler_0
STR R1,[R0, #+8]
BX LR
??SysTick_Handler_0:
STR R1,[R0, #+12]
// 22 }
BX LR ;; return
Неизвестно, чего у нашего фокусника не получалось больше -- то ли вообще листинг от кейла получить, то ли листинг выглядевший прилично. В общем, поступил он в свойственной ему манере -- подменили листинг кейла листингом иара.
Кейл. То же самое, но без плюсов, прерываний и прочей бесполезной фигни:
Код: Выделить всё
31: while (1) GPIOC->CRH ^= GPIO_CRH_MODE13_0 * ((SysTick->CTRL & SysTick_CTRL_COUNTFLAG_Msk) != 0);
LDR r2,[r0,#0x00]
LDR r3,[r1,#0x00]
AND r2,r2,#0x10000
EOR r2,r3,r2,LSL #4
STR r2,[r1,#0x00]
B 0x0800015A