[/tip]
Пришла долгожданная STM32F3 Discovery. До этого моргал только светодиодами на Arduino =)
Так как я полностью новичёк в программировании ARMов, начну, пожалуй, с выбора IDE, и запуском первого проекта.
Выбор IDE был не долгий, выбрал Keil. Так как в остальных (CoIde, Code::Blocks) небыло поддержки чипа STM32F303VC.
Брал сами знаете где. После установки предложит выбор пакетов — выбирайте для STM32F3xx как то так назывался.
Теперь нужны либы:
CMSIS — в ней содержатся описания для доступа к регистрам периферии и STM32F30x_StdPeriph_Driver
Распаковываем архивы в удобное место.
Цепляем плату к компу (На плате usb шник в разьём USB ST-LINK). Комп должен установить драйвера.
Проверить нужно в диспетчере устройств, если не поставились автоматом, то из установочной директории Keilа запускаем \Keil\ARM\STLink\USBDriver\ST-dpinst_amd64.exe
Ну и жмём обновить драйвера. Должен подхватить автоматом. P.S. Windows 8 x64 — всё ок.
После установки драйвера и подключения платы, светодиод COM должен постоянно гореть. Если нет — проблемы с подключением/с драйвером.
Дальше создаём новый проект и настраиваем:
- Project -> new uVision project
- В открывшемся окне выбираем наш проц
- В открывшемся окне в списке отмечаем Device -> Startup
- Слева в менеджере на проекте клацаем контекстную менюшку и выбираем Options for Target ….
- Дальше на вкладке Debug выбираем ST-Link Debugger, клацаем рядом кнопку Settings,
- в открывшемся окне выбираем вкладку Debug, находим Port ставим SW
- открываем вкладку Flash Download, нужно задать тип памяти, жмём Add, я выбрал STM32F3xx Flash. Жмём Add.
- Жмём Ok и переходим на вкладку Utilities, снимаем галку «Use debug driver» и выбираем снова ST-Link Debugger и настраиваем как на предыдущем шаге
- Переходим на вкладку С/С++ и в поле define вписываем «USE_STDPERIPH_DRIVER,STM32F30X«, без этого проект не соберётся.
- Дальше на этой же вкладке жмём на кнопку справа от поля Include Paths и добавляем пути по которым искать заголовочники либ
- путьУстановкиStdPeriph_Driver\STM32F30x_StdPeriph_Driver\inc
- путьУстановкиStdPeriph_Driver\STM32F30x_StdPeriph_Driver\src
- путьУстановкиCMSIS\Device\ST\STM32F30x\Include
- путьУстановкиCMSIS\Device\ST\STM32F30x\Source
- Добавим файлы в проект, в менеджере проекта выбираете группу «Source Group 1» и в контекстной менюшке выбираете: «Add new item to group …»
- Первым делом нужно добавить заголовочный файл с названием stm32f30x_conf.h (Иначе Keil будет ругаться при сборке) и в Location укажите папку conf и добавьте эту папку так же как на предыдущем шаге в Include Paths
- Ну а дальше добавляем файл исходников, называем main.cpp
- На этом настройки проекта закончены
Настало время немножко покодить, в main.c
//-- подключаем необходимые заголовочники #include "stm32f30x_conf.h" #include "stm32f30x_gpio.c" #include "stm32f30x_rcc.c" #include "stm32f30x.h" GPIO_InitTypeDef gpio; //-- храним настройки портов //-- реализуем функцию задержки void delay(long ms) { for(long i=0; i<ms; i++) __NOP(); } //-- настраиваем порты void initAll() { RCC_AHBPeriphClockCmd(RCC_AHBPeriph_GPIOE, ENABLE); gpio.GPIO_Mode = GPIO_Mode_OUT; gpio.GPIO_Pin = GPIO_Pin_8 | GPIO_Pin_9 | GPIO_Pin_10 | GPIO_Pin_11 | GPIO_Pin_12 | GPIO_Pin_13 | GPIO_Pin_14 | GPIO_Pin_15 ; GPIO_Init(GPIOE, &gpio); } int main() { initAll(); int pins[8] = {GPIO_Pin_8, GPIO_Pin_9, GPIO_Pin_10, GPIO_Pin_11, GPIO_Pin_12, GPIO_Pin_13, GPIO_Pin_14, GPIO_Pin_15 }; int i = 0; while(1){ if (i>=8) { i=0; GPIO_ResetBits(GPIOE, pins[7]); } if (i>0) { GPIO_ResetBits(GPIOE, pins[i-1]); } GPIO_SetBits(GPIOE, pins[i]); delay(60000); i++; } }
Пересобираем проект: Project -> Build target и заливаем на плату: Flash -> Download
Жмём на плате кнопку RESET и смотрим на бегающие по кругу огоньки.
[tip]Этот пост решает проблемы:
- Error: Flash Download failed — \Keil\ARM\STLink\ST-LINKIII-KEIL.dll
- Error: Flash download failed «CORTEX-M4»
2 комментария
При чём здесь AVR?
Не при чем, я перепутал. Спасибо.