Сообщение от sat_art
|
У таймеров есть "__IO uint32_t OR; /*!‹ TIM option register, Address offset: 0x50
RM0008 нет о нем упоминания вообще. Что это и где он описан?
|
Этого регистра нет в F103. Он есть в некоторых других сериях, например F3, L1, L4. Гляньте мануалы RM0316, RM0038, RM0351.
И Option Register занимается ремапом, то есть переназначениями коммуникации таймера. Там, если мануал откроете, увидите таблицу интерконнекта периферии - Peripheral interconnect matrix.
По поводу макросов - да нет, почему же. Особенно напрягала долбаная хня в F1 при настройке функции порта на выход. Это ж надо было конструкторам придумать такую дебильную систему.
А для дергания ножек я для себя определяю более конкретные макросы, например:
#define LEDRED_ON GPIOA-›BSRR = 1 ‹‹ 10
#define LEDRED_OFF GPIOA-›BRR = 1 ‹‹ 10
таким образом, в тексте я не парюсь по поводу имени порта и номера ножки светодиода, а перенос светодиода на другую ножку не вызывает сложности с изменением кода.
Дефайны типа SET_BIT, READ_BIT и подобные - они уже прописаны в заголовочнике МК, второй раз их лучше не писать, чтобы не получить предупреждение о переопределении.
Кстати, файл io.h не имеет стандартной защиты от его повторных подключений:
#ifdef IO_H
define IO_H
/* текст файла */
#endif
...
Сообщение от dgrishin
|
Есть ещё лучше способ -
|
О боже, это же жопа! И самое главное, непонятно - нахрена? нахрена столька букавок??
В F4 настройка порта занимает минимум строк и выглядит гораздо проще. Нет необходимости писать длинющие макросы только для того, чтобы потом ими заменить несколько строчек.