Перейти к содержанию
    

draft3

Новичок
  • Постов

    4
  • Зарегистрирован

  • Посещение

Репутация

0 Обычный
  1. Здравствуйте. Зашел в тупик. Нужно обрабатывать ошибку по I2C(например подтяжка отвалилась, дорожка перебита). Работаю STM32CubeIDE. Разрешаю I2C Glabal Interrupt(кстати I2c error interupt в Cube почему то нету) Переопределяю void HAL_I2C_ErrorCallback(I2C_HandleTypeDef *hi2c) . Но туда не попадаю. Отдельно в коде разрешаю прерывания по ошибке I2C __HAL_I2C_ENABLE_IT(&hi2c1, I2C_IT_ERRI); Но этот флаг ERRIE почему сбрасывается почти сразу после установки.... и прерывание по ошибке не срабатывает...
  2. Так компилируется: #include "iostm8.h" MODULE asmmain PUBLIC __iar_program_start PUBLIC main EXTERN CSTACK$$Limit //-------------------------------------------ПЕРЕМЕННЫЕ--------------------------------------------- SECTION `.noinit`:DATA:NOROOT(2) DATA//это зачем? работает и без нее. D_NUM DC8 1 ; Серийный номер D_DAT DC8 1 ; Дата выпуска dummy DC8 2 SECTION `.near_func.text`:CODE//начинается секция кода программ, что там в кавычках? __iar_program_start: LDW X, #0x000600 ; Set stackpointer LDW SP, X main: LD A,#5//загружаю в А число 5 //LD D_NUM,A// загружаю в переменную a1 значение из А END Но если раскомментировать "//LD D_NUM,A// загружаю в переменную a1 значение из А" то пишет ошибку: Error[Lc036]: no block or place matches the pattern "rw data section .noinit in asmmain.o"
  3. Я читал "IAR Assembler Reference Guide" пытался брать те куски кода которые там приводились но все никак не получается... особенно непонятно как правильно пользоваться директивой SECTION. Я так понимаю что нужно обьявить секцию для переменных сначала? Так значение переменной не меняется: #include "iostm8.h" MODULE asmmain PUBLIC __iar_program_start PUBLIC main EXTERN CSTACK$$Limit SECTION `.near_func.text`:CODE//начинается секция кода программ, что там в кавычках? __iar_program_start: a1 DC16 0 //двухбайтная переменная инициализируется значением 0 a2 DC16 9 //двухбайтная переменная инициализируется значением 9 LDW X, #0x000600 ; Set stackpointer LDW SP, X main: LD A,#5//загружаю в А число 5 LD a1,A// загружаю в переменную a1 значение из А END
  4. Нигде не найду как на ассемблере объявить переменную в среде IAR. А также где брать подключаемые хедер файлы для портов. Может у кого есть простая рабочая программка на асме под stm8 в среде IAR?
×
×
  • Создать...