Основы + ASF Cortex-M0

Вопрос задан: 2 года назад Последняя активность: 2 года назад
up 0 down

Я просто сделать переход от AVR к ARM и у меня возникли некоторые проблемы, просто получить простые мигания программы работать. Я искал по всему интернету, и мне кажется, что библиотеки Atmel ASF должны быть самым простым способом, чтобы начать работу, но я не могу показаться, чтобы получить рабочую программу.

Я использую Atmel Studio, чтобы написать код и попробовал несколько шаблонов без успеха. Я использую RobotDYN Cortex-M0, который имеет минимальную поддержку в лучшем случае, так что я лечу немного шторы здесь.

Вот то, что я до сих пор:

  • Создан новый проект C ASF Board с использованием шаблона пользователя платы для ATSAMD21G18A (подтверждено чип)
  • Использование ASF мастера я добавил:
    • IOPORT - общее назначение служба ввод/вывода
    • Задержка службы процедур

main.c:

#include <asf.h>
#include <delay.h>

#define TEST_PIN PIN_PA17

int main (void)
{
    system_init();

   ioport_init();
   ioport_set_pin_dir(TEST_PIN, IOPORT_DIR_OUTPUT); 

   while(1){
      ioport_set_pin_level(TEST_PIN, 1);
      delay_ms(1000);
      ioport_set_pin_level(TEST_PIN, 0);
      delay_ms(1000);
   }

}

Кажется, что все компилироваться и я могу запустить отладчик (Использование Atmel-ICE) и программа получает в первый ioport_set_pin_level и ничто не кажется, происходит на доске, и когда он пытается выполнить команду delay_ms она входит в задержке, но никогда не возвращается. Когда я приостановить выполнение программы, похоже он застрял в ожидании задержки, чтобы закончить в delay_cycles но когда я смотрю на параметр const uint32_t n в функции задержки он просто дает сообщение «оптимизированное».

Что мне не хватает? Есть, возможно, некоторые ключи компилятора или другие библиотеки ASF, что мне нужно импортировать?

Вот то, что я в настоящее время для опций C Compiler:

-x c -mthumb -D__SAMD21G18A__ -DDEBUG -DBOARD=USER_BOARD -DARM_MATH_CM0PLUS=true -DSYSTICK_MODE  -I"../src/ASF/common/boards" -I"../src/ASF/sam0/utils" -I"../src/ASF/sam0/utils/header_files" -I"../src/ASF/sam0/utils/preprocessor" -I"../src/ASF/thirdparty/CMSIS/Include" -I"../src/ASF/thirdparty/CMSIS/Lib/GCC" -I"../src/ASF/common/utils" -I"../src/ASF/sam0/utils/cmsis/samd21/include" -I"../src/ASF/sam0/utils/cmsis/samd21/source" -I"../src/ASF/sam0/drivers/system" -I"../src/ASF/sam0/drivers/system/clock/clock_samd21_r21_da_ha1" -I"../src/ASF/sam0/drivers/system/clock" -I"../src/ASF/sam0/drivers/system/interrupt" -I"../src/ASF/sam0/drivers/system/interrupt/system_interrupt_samd21" -I"../src/ASF/sam0/drivers/system/pinmux" -I"../src/ASF/sam0/drivers/system/power" -I"../src/ASF/sam0/drivers/system/power/power_sam_d_r_h" -I"../src/ASF/sam0/drivers/system/reset" -I"../src/ASF/sam0/drivers/system/reset/reset_sam_d_r_h" -I"../src/ASF/common2/boards/user_board" -I"../src" -I"../src/config" -I"../src/ASF/common2/services/delay" -I"../src/ASF/common2/services/delay/sam0" -I"../src/ASF/common/services/ioport"  -O1 -fdata-sections -ffunction-sections -mlong-calls -g3 -Wall -mcpu=cortex-m0plus -c -pipe -fno-strict-aliasing -Wall -Wstrict-prototypes -Wmissing-prototypes -Werror-implicit-function-declaration -Wpointer-arith -std=gnu99 -ffunction-sections -fdata-sections -Wchar-subscripts -Wcomment -Wformat=2 -Wimplicit-int -Wmain -Wparentheses -Wsequence-point -Wreturn-type -Wswitch -Wtrigraphs -Wunused -Wuninitialized -Wunknown-pragmas -Wfloat-equal -Wundef -Wshadow -Wbad-function-cast -Wwrite-strings -Wsign-compare -Waggregate-return  -Wmissing-declarations -Wformat -Wmissing-format-attribute -Wno-deprecated-declarations -Wpacked -Wredundant-decls -Wnested-externs -Wlong-long -Wunreachable-code -Wcast-align --param max-inline-insns-single=500 -MD -MP -MF "$(@:%.o=%.d)" -MT"$(@:%.o=%.d)" -MT"$(@:%.o=%.o)" 

1 ответ

Возможно, для Вашего проекта будут необходимы бесплатные векторные карты. На нашем сайте представлены карты для всех стран.

Реклама

up 0 down

Я наткнулся на ответ вскоре после того, как я отправил это и, возможно, кто-то может объяснить немного лучше, как поймать эти вещи с помощью контроллеров ARM/ASF. Все, что я должен был сделать, это внести следующие изменения:

#include <asf.h>
#include <delay.h>

#define TEST_PIN PIN_PA17

int main (void)
{
   system_init();

   ioport_init();
   delay_init();  /*** Must initialize the Delays ***/

   ioport_set_pin_dir(TEST_PIN, IOPORT_DIR_OUTPUT);

   while(1){
      ioport_set_pin_level(TEST_PIN, 1);
      delay_ms(1000);
      ioport_set_pin_level(TEST_PIN, 0);
      delay_ms(1000);
   }
}

Теперь это программа для функционирования ATSAMD21G18A. Я не знаю, почему не инициализируется задержка будет также испортить IO выход, может быть, кто-то может пролить немного света на это.

Ошибка 505

Что-то пошло не так

Попробуйте воспользоваться поиском