Здравствуйте. Поскольку мои микроконтроллеры пока что находятся на складах в другой стране, я бы хотел немного поиграться в симуляторе. Получаю .hex в Keil 5 и CoIDE 1.7.8, закидываю их в протеус и при симуляции 10 раз в микросекунду мне сообщают, что "Access to register of unclocked peripheral at 0x40010800 cause BUS_FAULT". Я правильно понимаю, что это не включилось тактирование? В данном случае (нашел в даташите) это адрес регистра GPIOA_CRL, но если заместо работы с портами попытаться настроить к примеру таймер, то будет та же самая ошибка, только адрес в ошибке поменяется на регистры таймеров.
В Keil в pack installer я выбрал STM32F103C6 и установил все что можно. При создании проекта я выбираю этот микроконтроллер и подключаю CORE из CMSIS, Startup из Devise, RCC, GPIO с Framevork из StdPerifDevise. Потом нажимаю ПКМ по Source Group 1, выбираю Add New Item, где добавляю main.c. Ну и данный код в main:
- Код:
#include "stm32f10x.h"
#include "stm32f10x_gpio.h"
#include "stm32f10x_rcc.h"
int main(void) {
GPIO_InitTypeDef GPIO_InitStructure;
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE);
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0 | GPIO_Pin_2;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
GPIO_Init(GPIOA, &GPIO_InitStructure);
while(1) {
}
}
Одних этих include достаточно ведь? Пути к папкам, где лежат эти файлы нигде не надо же указывать? В общем далее в Options for Target на в кладке Output, ставлю галку Create HEX. Нажимаю Build, ошибок нет, получаю .hex, закидываю его в протеус ну и эта ошибка. Пробовал без StdPerif (подключив только CORE из CMSIS и Startup из Devise). Тактирование включал записью в регистр RCC->APB2ENR число 0x4 или 0xFFFFFFFF и настраивал ножки в GPIOA->CRL числом 0x3. Тот же самый результат. В CoIDE выбрал микроконтроллер и подключил CMSIS Boot, CMSIS core RCC, GPIO. Набрал тот же самый код, Build без ошибок и все равно в протеусе ошибка. Полазил по файлам библиотек, вроде все нужные define есть (частота в 72 MHz точно не закоментирована). Так же пробовал поискать в инете различные готовые .hex для этого микроконтроллера, но либо вообще ничего не происходило, либо эта ошибка. Единственное можно при создание проекта в протеусе выбрать Create Firmware Project, появится вкладка для набора кода. Введенный туда "Hello, world!" вроде работает, точно не помню, но это не совсем то, что нужно. Atmega8 в протеусе нормально работала, а вот ARM никак не могу запустить.
Ну и собственно вопрос: В может быть причина? Я неправильно создаю проект? Нерабочие библиотеки себе IDE скачали? Или если залить эти прошивки в реальный микроконтроллер, то они будут работать (проблема только в протеусе)?