Универсальный внешний накопитель для всех iOS-устройств, совместим с PC/Mac, Android
Header Banner
8 800 100 5771 | +7 495 540 4266
c 9:00 до 24:00 пн-пт | c 10:00 до 18:00 сб
0 Comments

Программирование МК STM32

↓ Перейти к основному содержимому

Главная › Программирование МК STM32

&nbsp

&nbsp

&nbsp

 

 

  • Урок 1. Установка Keil μVision
  • Урок 2. Бегущие огни
  • Урок 3. Библиотека SPL. Подключаем кнопку
  • Урок 4. Библиотека HAL. STM32 CUBE MX. Светодиоды и кнопка
  • Урок 5. Библиотека HAL. STM32 CUBE MX. Таймеры
  • Урок 6. Библиотека HAL. LCD 20×4. 4-битный режим
  • Урок 7. HAL. LCD 20×4. 4-битный режим. Выводим информацию
  • Урок 8. HAL. Шина I2C. Подключаем микросхему RTC DS3231
  • Урок 9. HAL. Шина I2C. Продолжаем работу с DS3231
  • Урок 10. HAL. Изучаем PWM (ШИМ). Мигаем светодиодами плавно
  • Урок 11. HAL. Статическая индикация
  • Урок 12. HAL. Динамическая индикация
  • Урок 13. HAL. USART. Передача данных
  • Урок 14. HAL. USART. Прием данных
  • Урок 15. HAL. USART. DMA
  • Урок 16. HAL. ADC. Regular Channel
  • Урок 17.
    HAL. ADC. Regular Channel. Interrupt
  • Урок 18. HAL. ADC. Regular Channel. DMA
  • Урок 19. HAL. ADC Injected Channel
  • Урок 20. HAL. ADC. Injected Channel. Interrupt
  • Урок 21. HAL. ADC. Regular Channel. Trigger
  • Урок 22. HAL. I2C. I2C to LCD2004
  • Урок 23. HAL. SPI. Сдвиговый регистр 74HC595
  • Урок 24. HAL. SPI. LED Статическая индикация
  • Урок 25. HAL. SPI. LED Динамическая индикация
  • Урок 26. HAL. SPI. Драйвер индикатора MAX7219
  • Урок 27. HAL. DAC
  • Урок 28. HAL. DAC. Triangle
  • Урок 29. HAL. DAC. Triangle. DMA
  • Урок 30. HAL. DAC. Sinus. DMA
  • Урок 31. HAL. DAC. Noise
  • Урок 32. HAL. DAC. Noise. RNG
  • Урок 33. HAL. USB. Virtual Com Port
  • Урок 34. HAL. USB. HID
  • Урок 35. HAL. USB. Custom HID
  • Урок 36. HAL. USB. Host. Mass Storage Class

    • Часть 1
    • Часть 2
  • Урок 37. Подключаем дисплей TFT 240×320 на контроллере ILI 9341 с шиной 8bit

    • Часть 1
    • Часть 2
    • Часть 3
    • Часть 4
    • Часть 5
    • Часть 6
    • Часть 7
    • Часть 8
    • Часть 9
  • Урок 38. Плата NUCLEO STM32F401RE и оценочные платы
  • Урок 39. Подключаем акселерометр LSM303DLHC

    • Часть 1
    • Часть 2
    • Часть 3
    • Часть 4
    • Часть 5
  • Урок 40. Знакомство с платой NUCLEO STM32F767ZI
  • Урок 41. Подключаем акселерометр LIS3DSH

    • Часть 1
    • Часть 2
    • Часть 3
    • Часть 4
  • Урок 42. Подключаем акселерометр LSM6DS0

    • Часть 1
    • Часть 2
  • Урок 43. Подключаем акселерометр LSM6DS3

    • Часть 1
    • Часть 2
  • Урок 44. SDIO. FATFS
  • Урок 45. Подключаем гироскоп LSM6DS0

    • Часть 1
    • Часть 2
  • Урок 46. I2S AUDIO

    • Часть 1
    • Часть 2
    • Часть 3
    • Часть 4
    • Часть 5
    • Часть 6
    • Часть 7
  • Урок 47. Подключаем гироскоп LSM6DS3

    • Часть 1
    • Часть 2
  • Урок 48. USB DEVICE AUDIO

    • Часть 1
    • Часть 2
    • Часть 3
  • Урок 49. HAL. Магнитометр LSM303DLHC

    • Часть 1
    • Часть 2
  • Урок 50. Устанавливаем System Workbench for STM32
  • Урок 51. Подключаем магнитометр LIS3MDL

    • Часть 1
    • Часть 2
    • Часть 3
  • Урок 52. Датчик давления LPS25HB

    • Часть 1
    • Часть 2
    • Часть 3
    • Часть 4
  • Урок 53. System Workbench. Создаём новый проект
  • Урок 54. System Workbench. FreeRTOS
  • Урок 55. Подключаем датчик влажности HTS221

    • Часть 1
    • Часть 2
  • Урок 56. System Workbench. Подключаем библиотеку BSP

    • Часть 1
    • Часть 2
  • Урок 57. Wi-Fi. SPWF01SA11. Команды

    • Часть 1
    • Часть 2
    • Часть 3
  • Урок 58. System Workbench. LCD. SDIO

    • Часть 1
    • Часть 2
  • Урок 59. Модуль LCD 16×2 с кнопками
  • Урок 60. F769I-DISCO. WB. LCD. SDIO

    • Часть 1
    • Часть 2
  • Урок 61. Модуль LCD 16×2. Работаем с кнопками

    • Часть 1
    • Часть 2
    • Часть 3
  • Урок 62. FMC SDRAM

    • Часть 1
    • Часть 2
    • Часть 3
    • Часть 4
  • Урок 63. Модуль LCD 16×2. МЕНЮ

    • Часть 1
    • Часть 2
    • Часть 3
  • Урок 64. HAL. LTDC

    • Часть 1
    • Часть 2
    • Часть 3
  • Урок 65. Операционный усилитель TSZ124IPT

    • Часть 1
    • Часть 2
    • Часть 3
    • Часть 4
  • Урок 66. HAL. LTDC. SDRAM

    • Часть 1
    • Часть 2
  • Урок 67. HAL. LTDC. BMP

    • Часть 1
    • Часть 2
  • Урок 68. HAL. LAN. ENC28J60

    • Часть 1
    • Часть 2
    • Часть 3
    • Часть 4
    • Часть 5
    • Часть 6
    • Часть 7
    • Часть 8
    • Часть 9
    • Часть 10
  • Урок 69. HAL. LTDC. DMA2D

    • Часть 1
    • Часть 2
    • Часть 3
  • Урок 70. HAL. LTDC. Вывод текста на дисплей

    • Часть 1
    • Часть 2
  • Урок 71. LAN. ENC28J60. ARP

    • Часть 1
    • Часть 2
    • Часть 3
    • Часть 4
  • Урок 72. Touch panel FT5336

    • Часть 1
    • Часть 2
    • Часть 3
    • Часть 4
  • Урок 73. HAL. LTDC. EmWin. Подключение библиотеки

    • Часть 1
    • Часть 2
    • Часть 3
  • Урок 74. EXTI или внешние прерывания
  • Урок 75. LTDC. EmWin. BMP. Multiple Buffering
  • Урок 76. HAL. LTDC. EmWin. MultiLayer. Transparency
  • Урок 77. LAN. ENC28J60. Внешние прерывания (EXTI)
  • Урок 78. HAL. LTDC. EmWin. Window Manager
  • Урок 79. HAL. LTDC. EmWin. Подключаем акселерометр LSM6DS0
  • Урок 80. LAN. ENC28J60. UDP Server
  • Урок 81. LAN. ENC28J60. UDP Client
  • Урок 82.
    LAN. ENC28J60. Удаленный доступ
  • Урок 83. LAN. ENC28J60. NTP. Узнаём точное время

    • Часть 1
    • Часть 2
  • Урок 84. LAN. ENC28J60. TCP Server. Соединение

    • Часть 1
    • Часть 2
  • Урок 85. LAN. ENC28J60. TCP Server. Передача данных
  • Урок 86. LAN. ENC28J60. HTTP Server. Передаём малую страницу

    • Часть 1
    • Часть 2
  • Урок 87. LAN. ENC28J60. HTTP Server. Передаём страницу побольше

    • Часть 1
    • Часть 2
  • Урок 88. SD. SPI. FATFS

    • Часть 1
    • Часть 2
    • Часть 3
    • Часть 4
  • Урок 89. LAN. ENC28J60. HTTP Server. Подключаем карту SD
  • Урок 90. Датчик освещённости VL6180X

    • Часть 1
    • Часть 2
    • Часть 3
    • Часть 4
    • Часть 5
  • Урок 91. LAN. W5500. HTTP Server

    • Часть 1
    • Часть 2
    • Часть 3
    • Часть 4
    • Часть 5
  • Урок 92. Датчик температуры DS18B20

    • Часть 1
    • Часть 2
    • Часть 3
  • Урок 93. LAN. W5500. HTTP Server. Сокеты

    • Часть 1
    • Часть 2
  • Урок 94. DS18B20. Несколько датчиков на одной шине

    • Часть 1
    • Часть 2
    • Часть 3
  • Урок 95. LAN. W5500. FTP Server

    • Часть 1
    • Часть 2
    • Часть 3
    • Часть 4
  • Урок 96. LAN8720. LWIP. TCP Client

    • Часть 1
    • Часть 2
    • Часть 3
  • Урок 97. Подключаем bluetooth-модуль HC-05
  • Урок 98. LAN8720. LWIP. TCP Server

    • Часть 1
    • Часть 2
  • Урок 99. HC-05. Master. Соединяем два МК

    • Часть 1
    • Часть 2
  • Урок 100. LAN8720. LWIP. TCP. Соединяем два контроллера

    • Часть 1
    • Часть 2
  • Урок 101. HC-05. Передаём температуру
  • Урок 102. LAN8720. LWIP. HTTP RAW

    • Часть 1
    • Часть 2
  • Урок 103. Модули NRF24L01

    • Часть 1
    • Часть 2
    • Часть 3
    • Часть 4
  • Урок 104. FreeRTOS. Бинарные (двоичные) семафоры

    • Часть 1
    • Часть 2
  • Урок 105. NRF24L01. Передаём данные

    • Часть 1
    • Часть 2
  • Урок 106. FreeRTOS. Динамическое создание и уничтожение задач

    • Часть 1
    • Часть 2
  • Урок 107. Датчик влажности и температуры DHT22

    • Часть 1
    • Часть 2
  • Урок 108. FreeRTOS. Параметры
  • Урок 109. NRF24L01. Передаём температуру и влажность с датчика DHT22
  • Урок 110. FreeRTOS. Приоритеты задач
  • Урок 111. FreeRTOS. Очереди

    • Часть 1
    • Часть 2
  • Урок 112. FreeRTOS. Таймеры
  • Урок 113. NRF24L01. Несколько передатчиков

    • Часть 1
    • Часть 2
    • Часть 3
  • Урок 114. FreeRTOS. Продвинутая задержка DelayUntil
  • Урок 115. NRF24L01. Несколько приемников

    • Часть 1
    • Часть 2
  • Урок 116. FreeRTOS. Прерывания. Очереди в прерываниях

    • Часть 1
    • Часть 2
  • Урок 117. NRF24L01. Обмен информацией
  • Урок 118. LAN8720. LWIP. RAW. UDP Client
  • Урок 119. WS2812B. Лента на умных светодиодах RGB

    • Часть 1
    • Часть 2
    • Часть 3
  • Урок 120. LAN8742A. LWIP. NETCONN. UDP Server
  • Урок 121. Датчик температуры, давления и влажности BME280

    • Часть 1
    • Часть 2
    • Часть 3
    • Часть 4
  • Урок 122. LAN87XX. LWIP. NETCONN. UDP. Соединяем два контролера
  • Урок 123. LAN87XX. LWIP. NETCONN. UDP. Соединяем три контролера

    • Часть 1
    • Часть 2
  • Урок 124. LAN8742A. LWIP. NETCONN. TCP Server
  • Урок 125. LAN8742A. LWIP. NETCONN. TCP Client
  • Урок 126. LAN8742A. LWIP. NETCONN. TCP. Соединяем два контролера
  • Урок 127. LAN8742A. LWIP. NETCONN. HTTP Server
  • Урок 128. LAN8742A. LWIP. NETCONN. HTTP. AJAX

    • Часть 1
    • Часть 2
    • Часть 3
  • Урок 129. LAN8742A. LWIP. NETCONN. HTTP. WebSocket

    • Часть 1
    • Часть 2
    • Часть 3
    • Часть 4
  • Урок 130. LAN8742A. LWIP. NETCONN. NTP. Узнаём точное время

    • Часть 1
    • Часть 2
  • Урок 131. LAN8742A. LWIP. SOCKET. UDP Server

    • Часть 1
    • Часть 2
  • Урок 132. LAN8742A. LWIP. SOCKET. UDP. Соединяем два контроллера
  • Урок 133. LAN8742A. LWIP. SOCKET. TCP Server
  • Урок 134. LAN8742A. LWIP. SOCKET. TCP Client
  • Урок 135. LAN8742A. LWIP. SOCKET. TCP. Соединяем три контролера
  • Урок 136. LAN8742A. LWIP. SOCKET. HTTP Server
  • Урок 137. LAN8742A. LWIP. SOCKET. HTTP. AJAX
  • Урок 138. Independent watchdog (IWDG)

    • Часть 1
    • Часть 2
  • Урок 139. LAN8742A. LWIP. SOCKET. HTTP. WebSocket
  • Урок 140. Window watchdog (WWDG)

    • Часть 1
    • Часть 2
  • Урок 141. USB HS Host MSC Standalone

    • Часть 1
    • Часть 2
  • Урок 142. WS2812B. Ленты на 150-300 светодиодов

    • Часть 1
    • Часть 2
    • Часть 3
    • Часть 4
    • Часть 5
  • Урок 143. USB HS Host MSC FREERTOS

    • Часть 1
    • Часть 2
  • Урок 144. Режимы пониженного энергопотребления. SLEEP

    • Часть 1
    • Часть 2
  • Урок 145. WS2812B. Новые эффекты и оптимизация кода

    • Часть 1
    • Часть 2
    • Часть 3
  • Урок 146. LL. Светодиоды и кнопка
  • Урок 147. LL. Таймеры

    • Часть 1
    • Часть 2
  • Урок 148. LL. Динамическая индикация
  • Урок 149. LL. PWM (ШИМ). Мигаем светодиодами плавно
  • Урок 150. LL. I2C. Подключаем внешний EEPROM

    • Часть 1
    • Часть 2
    • Часть 3
  • Урок 151. LL. I2C. Переходник для LCD 16×2
  • Урок 152. LL. SPI. Драйвер индикатора MAX7219

    • Часть 1
    • Часть 2
  • Урок 153. HAL. SPI. Соединяем два контроллера

    • Часть 1
    • Часть 2
  • Урок 154. LL. SPI. Соединяем два контроллера
  • Урок 155. HAL. DMA. MEM2MEM
  • Урок 156. LL. DMA. MEM2MEM

    • Часть 1
    • Часть 2
  • Урок 157. HAL. SPI. Interrupt
  • Урок 158. LL. SPI. Interrupt
  • Урок 159. HAL. SPI. DMA
  • Урок 160. LL. SPI. DMA
  • Урок 161. LL. USART. Передача данных

    • Часть 1
    • Часть 2
  • Урок 162. LL. USART. Приём данных
  • Урок 163. LL. USART. Interrupt
  • Урок 164. LL. USART. DMA
  • Урок 165. CMSIS. STM32F1. Бегущие огни
  • Урок 166. CMSIS. STM32F1. RCC

    • Часть 1
    • Часть 2
  • Урок 167. CMSIS. STM32F1. SysTick. Прерывания
  • Урок 168. CMSIS. STM32F1. Таймеры
  • Урок 169. CMSIS. STM32F1. GPIO. Input
  • Урок 170. CMSIS. STM32F1. Динамическая индикация
  • Урок 171. CMSIS. STM32F1. PWM (ШИМ). Мигаем светодиодами плавно
  • Урок 172. CMSIS. STM32F1. I2C. Подключаем внешний EEPROM
  • Урок 173. CMSIS. STM32F1. I2C. Переходник для LCD 16×2
  • Урок 174. CMSIS. STM32F1. SPI. Драйвер индикатора MAX7219
  • Урок 175. CMSIS. STM32F1. SPI. Соединяем два контроллера
  • Урок 176. CMSIS. STM32F1. DMA. MEM2MEM
  • Урок 177. CMSIS. STM32F1. SPI. Interrupt
  • Урок 178. CMSIS. STM32F1. SPI. DMA
  • Урок 179. Дисплей TFT 240×320. SPI

    • Часть 1
    • Часть 2
  • Урок 180. Дисплей TFT 240×320. SPI. DMA
  • Урок 181. USART. Передача данных
  • Урок 182. USART. Приём данных
  • Урок 183. CMSIS. STM32F1. USART. Interrupt
  • Урок 184. CMSIS. STM32F1. USART. DMA
  • Урок 185. STM32F1. LL. ADC. Regular Once

    • Часть 1
    • Часть 2
  • Урок 186. LL. STM32F1. ADC. Regular Once. Interrupt
  • Урок 187. LL. STM32F1. ADC. Regular Continuous. Interrupt
  • Урок 188. LL. STM32F1. ADC. Regular Once. Запуск по таймеру
  • Урок 189. LL. STM32F1. ADC. Regular Once. DMA
  • Урок 190. LL. STM32F1. ADC. Regular Continuous. DMA
  • Урок 191. LL. STM32F1. ADC. Regular Once. DMA. Запуск по таймеру
  • Урок 192. LL. STM32F1. ADC. Injected Once
  • Урок 193. LL. STM32F1. ADC. Injected Once. Interrupt
  • Урок 194. LL. STM32F1. ADC. Injected Continuous. Interrupt
  • Урок 195. LL. STM32F1. ADC. Injected Once. Запуск по таймеру
  • Урок 196. LL. STM32F1. ADC. Injected Once Scan
  • Урок 197. LL. STM32F1. ADC. Injected Once Scan. Interrupt
  • Урок 198. LL. STM32F1. ADC. Injected Continuous Scan. Interrupt
  • Урок 199. LL. STM32F1. ADC. Injected Once Scan. Запуск по таймеру
  • Урок 200. CMSIS. Bit banding
  • Урок 201. Assembler. Первый проект. Команды MOV, LDR, STR, B

    • Часть 1
    • Часть 2
  • Урок 202. Assembler. Мигающий светодиод. BX, BL, SUB. Флаги. Условия
  • Урок 203. Assembler. RCC. Стек. Новые команды

    • Часть 1
    • Часть 2
  • Урок 204. Assembler. SysTick. Прерывания
  • Урок 205. Assembler. Таймеры. Табличные переходы
  • Урок 206. LL. STM32F4. Светодиоды и кнопка
  • Урок 207. LL. STM32F4. Таймеры
  • Урок 208. LL. STM32F4. SPI. Дисплей TFT 240×320
  • Урок 209. LL. STM32F4. SPI. Дисплей TFT 240×320. DMA
  • Урок 210. LL. STM32F4. DMA. MEM2MEM
  • Урок 211. LL. STM32F4. I2C. Подключаем внешний EEPROM
  • Урок 212. LL. STM32F4. USART
  • Урок 213. LL. STM32F4. USART. DMA
  • Урок 214. HAL. STM32F4. FLASH память W25Q. Получение информации
  • Урок 215. HAL. STM32F4. FLASH память W25Q. Чтение данных
  • Урок 216. HAL. STM32F4. FLASH память W25Q. Используем программу для обмена данными
  • Урок 217. HAL. STM32F4. FLASH память W25Q. Считываем данные в программу
  • Урок 218. HAL. STM32F4. FLASH память W25Q. Стираем информацию
  • Урок 219. HAL. STM32F4. FLASH память W25Q. Запись данных. Подключаем LCD

 

 

 

 

Опубликовано
© Narod Stream

Наверх

Программирование STM32

Программирование STM32

ПРОГРАММИРОВАНИЕ


МИКРОКОНТРОЛЛЕРОВ STM32
БАЗОВЫЙ КУРС

2 года подготовки, ​100 видеоуроков, общей продолжительностью 37 часов, в которых раскрыты самые важные основы микроконтроллеров stm32.

  • Схемотехника подключения микроконтроллеров stm32
  • Работа в фирменной среде CubeIDE
  • Использование встроенного конфигуратора для генерации кода
  • Работа с ядром Cortex
  • Использование инструментов отладки программы

Автор Селиванов Максим

Кому подойдет этот курс?

Разработчикам электроники

   Если вы начинающий или среднего уровня разработчик, то данный курс вам будет особенно полезен. В настоящее время многие фирмы используют в своих разработках микроконтроллеры STM32. Во многих странах СНГ, использование STM32 в профессиональной сфере стало почти стандартом де факто. Знание этих микроконтроллеров позволит вам претендовать на гораздо более высокий оклад.

Фрилансерам

   Современные проекты требуют больших вычислительных ресурсов и больших объемов памяти. Благодаря очень широкой линейке STM32 как нельзя лучше подходят для решения самых сложных современных задач, за которые заказчики готовы платить больше всего. 
   Чем лучше вы будете владеть инструментами для работы с stm32, тем быстрее и качественнее сможете решать самые сложные задачи. А глубокое понимание основ позволит избежать трудноуловимых ошибок, которые, как это не редко бывает, появляются уже после сдачи проекта заказчику.

Студентам

   ​В настоящее время во многих вузах преподают основы архитектуры ARM на примере ядер Cortex-M и практику программирования stm32.  
   Основная сложность при изучении stm32 и ядер Cortex-M состоит в том, что очень мало литературы на русском языке, а та литература, которая есть слишком теоритезированна. Изучение ядра Cortex в отрыве от практики имеет очень низкую эффективность. Если теория из книги никак не подкреплена практикой, то большая часть материала остается совершенно непонятной. 
   В данном курсе есть много видео, которые посвящены изучению работы ядра Cortex. Большая часть теории сопровождается практическими примерами использования. Такой подход позволяет намного глубже понять основы работы ядер Cortex. 

Ардуинщикам

  Если вы увлекаетесь электроникой и Arduino и хотите вывести свое хобби на новый уровень, то вам не обойтись без использования stm32. Возможностей AVR микроконтроллеров сегодня хватает только на самые простые проекты. 
   Да, существуют платы на stm32, которые так же поддерживаются средой arduino, но этих плат очень мало по сравнению с более чем 1800 различных микроконтроллеров stm32, что значительно сужает окно выбора подходящего микроконтроллера. А из-за требований совместимости кода, среда arduino сильно урезает возможности STM32. 
   Возможно, вы опасаетесь, что переход будет слишком сложным, но это не так. Среда CubeIDE со встроенным конфигуратором начальной настройки и библиотека HAL позволяет значительно упростить порог вхождения в STM32. Программирование в среде CubeIDE становится таким же простым как и в среде Arduino!

Что вы получите, изучив данный курс?

  •   Освоите мощный и современный инструмент для решения большинства современных задач
  •   ​Пропадет неуверенность перед использованием всех микроконтроллеров stm32
  •   Значительно повысете квалификацию в области разработки встраиваемых систем
  •   Упорядочите свои занния по теме программирования STM32
  •   Значительно ускорите разработку и отладку программ
  •   Повысите надежность работы программ на stm32

Что особенного в этом курсе?

  •   Последовательное изучение от простого к сложному. Такой подход позволяет освоить даже самые сложные темы.  
  •   Очень глубокое изучение внутреннего устройства микроконтроллеров stm32 и ядра Cortex в частности
  •   ​Закрепление теоретических знаний на практике. Даже самая сложная для понимания теория станет простой после изучения нескольких практических примеров

Что вы найдете в курсе?

  •   100 видео по самым разным темам прямо или косвенно связанным с STM32  
  •   ​​Шпаргалки по внутренней организации stm32, схемотехнике, настройке периферии и т.д
  •   ​Исходные коды проектов из видео с подробными комментариями

Makefiles | Проект STM32-base

STM32-base использует make-файлы для автоматизации процесса компиляции кода C и C++. Makefiles обрабатываются программой make . Программы, которые будут выполняться из в , определяются так называемыми правилами. Эти правила определены в make-файлах.

Программы , выполняющие запуска, ничем не отличаются от тех, которые можно запустить вручную в окне терминала. Однако из-за большого количества аргументов, которые необходимо передать в GNU GCC, автоматизация этого процесса менее подвержена ошибкам.

Помимо меньшей подверженности ошибкам, make также может обнаруживать изменения, внесенные в (исходные) файлы. Это позволяет сделать обновлять только те файлы, которые были изменены. Чтобы узнать, как работает make , обратитесь к официальному руководству GNU make . Для получения более общей информации о make посетите веб-сайт GNU make .

Общий make-файл

Makefile common.mk , расположенный в make 9Каталог 0004 в базовом репозитории STM32 содержит все эти так называемые правила. В этой статье не будет объясняться, как построчно работают make-файлы на базе STM32. Однако в нем будут выделены некоторые важные части этих make-файлов и ссылки на соответствующую документацию, если это уместно.

Переменные

Большинство строк в make-файле common.mk имеют какое-то отношение к переменным. Большинство переменных, используемых в этом make-файле, также устанавливаются в этом make-файле. Некоторые переменные устанавливаются с помощью = оператор. Этот оператор просто устанавливает переменную в заданное значение.

Переменные, установленные с помощью оператора ?= , устанавливаются только в том случае, если эта переменная еще не была установлена ​​в этот момент. Это позволяет установить эти переменные в другом make-файле. STM32-base использует этот способ установки переменных, чтобы пользователи могли перезаписывать значения этих переменных в своих проектах makefile. Обратитесь к шпаргалке по параметрам make-файла, чтобы узнать, какие переменные можно установить в make-файле проекта.

Для добавления значений к переменным используется оператор += . Этот оператор в основном используется для добавления всех аргументов для GCC к одной переменной.

Условные операторы и другие make-файлы

Условные операторы используются в make-файле common.mk . Условные операторы могут, например, использоваться для условной установки или добавления значений к переменным или для включения других make-файлов. Например, make-файлы для конкретных серий включаются в зависимости от имени используемого устройства.

Правила

Остальная часть make-файла состоит из правил. Правила сообщают сделать , какие файлы должны быть обновлены, как файлы должны быть обновлены и в каком порядке это должно происходить. Правила имеют следующий синтаксис:

 цели : нормальные-пререквизиты | предварительные условия только для заказа
    рецепт
 

Цели сообщают make , какие файлы следует обновить. Предварительные условия сообщают make , какие файлы будут запускать обновление цели (целей). Предпосылки также определяют порядок, в котором рецепты будут вызываться. Только предварительные условия заказа не заставляют цель обновляться. Заказ только предпосылки используются для создания 9, чтобы получить имя(я) необходимых условий.

Make-файлы для конкретных серий

Помимо make-файла common.mk базовый репозиторий STM32 содержит несколько дополнительных make-файлов. Эти make-файлы зависят от серии и находятся в подкаталогах каталога make . Эти make-файлы отвечают за сопоставление имени устройства со значением, которое может использоваться официальным CMSIS. В дополнение к отображению эти make-файлы устанавливают некоторые дополнительные переменные: SERIES_CPU , SERIES_FOLDER и MAPPED_DEVICE .

SERIES_CPU

Эта переменная содержит название конкретного ядра Cortex-M, присутствующего в выбранной серии микроконтроллеров. Это значение передается непосредственно компилятору.

SERIES_FOLDER

Эта переменная содержит имя папки для серии. Эта переменная используется для включения правильного кода запуска, сценариев компоновщика и, при использовании, файлов CMSIS и HAL.

MAPPED_DEVICE

Эта переменная содержит имя сопоставленного устройства. Это имя используется для включения правильного кода запуска и сценария компоновщика. Он также передается в GCC как макрос с аргументом -D . Полный обзор сопоставления имен устройств см. на странице сопоставления имен устройств.

программирование

Опубликовано 23 ноября 2022 г. &nbsp &middot &nbsp&nbsp3 мин чтения &nbsp &middot &nbsp # Комментарии &nbsp &middot &nbsp #сегодня-я-узнал&nbsp #программирование&nbsp

Pub/Sub от Google Cloud — это полезный сервис, предоставляющий асинхронную и масштабируемую платформу обмена сообщениями, которая отделяет службы, создающие сообщения, от тех, которые получают и обрабатывают эти сообщения. В сочетании с Apache Beam (и/или Dataflow, управляемой версией Google) вы можете быстро разработать мощные пакетные и потоковые конвейеры для параллельной обработки данных. Однако недавно я столкнулся с одной небольшой заминкой — хотя Apache Beam имеет встроенный коннектор ввода-вывода для pubsub, он поддерживал только потоковые конвейеры (на момент разработки).

Подробнее


Опубликовано 17 мая 2022 г. &nbsp &middot &nbsp&nbsp2 мин чтения &nbsp &middot &nbsp # Комментарии &nbsp &middot &nbsp #сегодня-я-узнал&nbsp #programming&nbsp

Ресурс Terraform null_resource может быть полезен, когда нет существующих модулей для удовлетворения ваших потребностей (с некоторыми оговорками). Документации Hashicorp для него немного не хватает, но, к счастью, больше информации о поставщиках есть в других их документах здесь. После использования этих ресурсов в нескольких местах развертывания нашей инфраструктуры я разработал небольшую коллекцию советов, которые я собрал за последние несколько месяцев и которыми, как я думал, я поделюсь.

Подробнее


Опубликовано 8 марта 2022 г. &nbsp &middot &nbsp&nbsp2 мин чтения &nbsp &middot &nbsp # Комментарии &nbsp &middot &nbsp #сегодня-я-узнал&nbsp #programming&nbsp

Облачные функции — это простой, производительный и потенциально недорогой способ создания бессерверных серверных частей. Недавно я пошел по пути настройки непрерывного развертывания для них и решил поделиться с ним своими знаниями.

Подробнее


Опубликовано 22 февраля 2021 г. &nbsp &middot &nbsp&nbsp12 минут чтения &nbsp &middot &nbsp # Комментарии &nbsp &middot &nbsp #3d-печать&nbsp #дизайн&nbsp #электрика&nbsp #программирование&nbsp #embedded&nbsp

Несколько лет назад мне пришла в голову идея отслеживать мою закваску с помощью компьютерного зрения. Было удобно следить за этим таким образом, но это было довольно непрактично делать для каждого кормления, поскольку требовалось настроить камеру, загрузить изображения и выполнить некоторую ручную обрезку изображения перед запуском его через мой скрипт анализа. Анализ также был сделан только постфактум, и мне действительно нужно было что-то, что могло бы сказать мне, когда стартер был готов к использованию (или кормлению), или, если я упустил окно возможностей, как давно он достиг своего пика.

Подробнее


Опубликовано 25 апреля 2019 г. &nbsp &middot &nbsp&nbsp5 минут чтения &nbsp &middot &nbsp # Комментарии &nbsp &middot &nbsp #программирование&nbsp #embedded&nbsp

Несколько лет назад я создал руководство по настройке кода Visual Studio для разработки с помощью STM32. Поскольку я также занимался разработкой на Nordic nRF52, я решил поделиться еще одним руководством, чтобы показать, как можно настроить, прошить и отладить проект с помощью Visual Studio Code. Проект шаблона, обсуждаемый в этом посте, можно найти на Github. Инструкции Набор инструментов Nordic является кроссплатформенным, но приведенные ниже инструкции предназначены специально для Linux.

Подробнее


Опубликовано 24 июня 2018 г. &nbsp &middot &nbsp&nbsp15 минут чтения &nbsp &middot &nbsp # Комментарии &nbsp &middot &nbsp #programming&nbsp

Хлеб, квинтэссенция жизни. Люди веками выживали за счет этого основного продукта, состоящего только из муки, воды, соли и дрожжей. Попробуйте употреблять все эти ингредиенты по отдельности, и вас ждет пищеварительный сюрприз. Тем не менее, смешайте их вместе и дайте времени сделать свое дело, и в результате вы получите глубокий вкус, текстуру и питательные вещества, которые ранее были заблокированы. Несмотря на то, что превратить тесто во что-то, что выглядит и ощущается как хлеб, относительно легко, задача состоит в том, чтобы выжать все возможные унции вкуса и текстуры (используя только эти четыре ингредиента), чтобы получить воплощение настоящей буханки хлеба.

Подробнее


Опубликовано 6 апреля 2018 г. &nbsp &middot &nbsp&nbsp13 минут чтения &nbsp &middot &nbsp # Комментарии &nbsp &middot &nbsp #programming&nbsp

В случае, если заголовок не ясен, эта запись в блоге посвящена разработке веб-приложения с использованием языка программирования Python с использованием Jupyter Lab, Flask и платформы Heroku. Если вы искали статью о рецептах питона, вы можете начать с этой статьи о приготовлении вареного карри из бирманского питона. Предыстория Проблема онлайн-рецептов выпечки заключается в том, что в большинстве из них используются объемные единицы измерения. Как известно любому цивилизованному пекарю, 1 чашка муки Патриции вполне может отличаться от 1 чашки муки Патрика.

Подробнее


Опубликовано 9 февраля 2018 г. &nbsp &middot &nbsp&nbsp8 минут чтения &nbsp &middot &nbsp # Комментарии &nbsp &middot &nbsp #programming&nbsp

Будучи инженером по мехатронике (прохожу обучение), иногда мне нравится делать вид, что я тоже умею программировать. В моих последних приключениях с программным обеспечением в MistyWest мне нужно было написать приложение на C#, которое включало проверку связи для поиска устройств, которые физически подключены через Ethernet. Поскольку Google и Stack Overflow — два моих лучших друга, я смог довольно быстро найти (казалось) решение вне сети.

Подробнее


Опубликовано 29 октября 2017 г. &nbsp &middot &nbsp&nbsp2 мин чтения &nbsp &middot &nbsp # Комментарии &nbsp &middot &nbsp #программирование&nbsp #embedded&nbsp

Сочетание функциональности, настраиваемости и эстетики Visual Studio Code делает его одним из моих любимых редакторов кода. Таким образом, я был настроен на то, чтобы заставить его работать со встроенной разработкой, так как я начал работать с линейкой микроконтроллеров STM32. Я следовал шагам, изложенным в Mastering STM32 от Carmine Noviello (это отличный ресурс), пока там не сказали использовать Eclipse, потому что жизнь слишком коротка, чтобы использовать программное обеспечение с ненужным раздуванием.

Подробнее


Опубликовано 4 апреля 2017 г. &nbsp &middot &nbsp&nbsp4 мин чтения &nbsp &middot &nbsp # Комментарии &nbsp &middot &nbsp #работа&nbsp #программирование&nbsp #дизайн&nbsp #electrical&nbsp

Обзор проекта Цель: создать автономный портал, который будет следовать за гарнитурой HTC Vive, всегда оставляя кабель позади пользователя. Мотивация: Экстравагантная вечеринка на выставке CES 2017, организованная MistyWest. Функции: Конструкция планарного гентри CoreXY Система, построенная из алюминиевых профилей 8020 и акриловых компонентов, вырезанных лазером Управление шаговым двигателем с помощью Teensy 3.2 HTC Vive Отслеживание позы с помощью C++ Патент заявлен Навыки:

Подробнее


Опубликовано 5 февраля 2017 г. &nbsp &middot &nbsp&nbsp6 минут чтения &nbsp &middot &nbsp # Комментарии &nbsp &middot &nbsp #электрика&nbsp #программирование&nbsp #embedded&nbsp

Резюме проекта Цель: Создать небольшой модульный контроллер для регулирования температуры водяной бани. Мотивация: Приобщиться к этой кулинарной причуде, не роняя толстые стопки наличных на погружной циркуляционный насос. Функции: Хрустящий 0,96-дюймовый OLED-дисплей Кнопочный поворотный энкодер обеспечивает простое взаимодействие с пользователем Съемный штекер температуры через стандартный 3-контактный аудиоразъем Выход с регулируемой температурой для использования с любым нагревательным элементом (например, рисоваркой, мультиваркой и т. д.)

Подробнее


&nbsp Опубликовано 1 октября 2016 г. &nbsp &middot &nbsp&nbsp2 мин чтения &nbsp &middot &nbsp # Комментарии &nbsp &middot &nbsp #программирование&nbsp

Предыстория: Среди бумажных блокнотов, самоклеящихся заметок, OneNote, Evernote и многих других — нет недостатка в способах записи. У каждого из них есть свои сильные и слабые стороны, но ни один из них не удовлетворял моим требованиям в качестве ежедневного рабочего журнала для записи ключевых событий, мыслей и вех в течение моего рабочего дня. Мой бумажный блокнот отлично подходит для свободных мыслей, набросков и расчетов, но я хотел бы иметь отдельный блокнот, чтобы отслеживать эти последовательные события.

Подробнее


Опубликовано 6 августа 2015 г. &nbsp &middot &nbsp&nbsp6 минут чтения &nbsp &middot &nbsp # Комментарии &nbsp &middot &nbsp #programming&nbsp

Формат этой серии статей представляет собой набросок моего мыслительного процесса во время разработки @thehaikuza. Поэзию трудно писать, когда алгоритмы чрезвычайно глупы. Я не хочу, чтобы мой генератор хайку был поваром-вегетарианцем. Нет ничего плохого в том, чтобы всегда делать словесный салат, но в конце концов ему придется научиться делать более причудливые вещи. Поэтическое ризотто было бы неплохо время от времени. Оставить @thehaikuza заниматься полной тарабарщиной — это не то, что я планировал.

Подробнее


Опубликовано 12 июля 2015 г. &nbsp &middot &nbsp&nbsp7 минут чтения &nbsp &middot &nbsp # Комментарии &nbsp &middot &nbsp #programming&nbsp

Формат этой серии статей представляет собой набросок моего мыслительного процесса во время разработки @thehaikuza. Хайку простые Даже дети могут их писать, может и программы тоже? Нет ничего круче алгоритмической поэзии. За исключением, может быть, Карла Сагана. Я слышал, что он был довольно крутым парнем. Однажды в воскресенье вечером, когда я ехал домой, я слушал радио, и мне попалась реклама университета, который представлял на литературный конкурс созданные компьютером стихи.

Подробнее


Опубликовано 10 июля 2015 г. &nbsp &middot &nbsp&nbsp1 мин чтения &nbsp &middot &nbsp # Комментарии &nbsp &middot &nbsp #programming&nbsp

Цель: Разработать алгоритм для создания хайку с использованием текстов песен. Мотивация: потому что компьютерная лингвистика — это круто. Проект: twitter.com/thehaikuza Функции: Извлекает историю трансляций Virgin Radio, чтобы найти недавно прослушанные песни Создает очередь хайку на основе песен в Google Таблицах Создает хайку, используя очередь в качестве ссылки, и публикует ее в Твиттере Проверяет наличие новых твитов каждые 5 минут и создает соответствующее хайку, если требуется Находит все тексты песен из Lyrics Wikia Runs on a Raspberry Pi Challenges:

Подробнее


Опубликовано 19 февраля 2015 г. &nbsp &middot &nbsp&nbsp1 мин чтения &nbsp &middot &nbsp # Комментарии &nbsp &middot &nbsp #programming&nbsp

Предыстория: включая (но не ограничиваясь) сопротивление, гравитацию, плотность воздуха, высоту, вращение пули и вращение Земли.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *