Corvus, попробую немножко конкретизировать мой вопрос - информации по теме как настроить таймер достаточно. Думаю, что даже ref manuala будет в самый раз. Я хотел бы найти минимально необходимое для понимания работы описание функций и структур HAL. Чтобы не гадать как оно там сделано и что конкретно делает функция. Степеней свободы много. Аппаратура как заметили - сложная. По этой причине и описание на "обертку" должно быть и быть однозначным для интерпретации.
Цитата(Corvus @ Jan 7 2015, 15:17)

uint32_t Period, как видно из названия - период работы таймера.
Настройка DMA для "Output compare mode" вам не нужны.

Да, период работы таймера, но зачем его нужно задавать для режима "Output compare mode". Можно предположить, конечно, что есть возможность еще и менять "базу" таймера. В этом случае работает Autoreload в регистр счетчика? Хоть да, хоть нет, но функция/ее переменные должна быть описана полноценно иначе как можно ее использовать?
Цитата
Документация по таймерам
http://www.st.com/web/en/resource/technica.../DM00042534.pdfв частности, OCR-mode на стр. 13 Там же. Да, интересно, но опять же без учета HAL. Если речь о ручной конфигурации - то начинать надо с ref manual.
Цитата
И всё же, советую залезть в "потроха". В stm32f4xx_tim.h ничего страшного нет, зато вполне понятные комментарии к структурам, их полям и возможным значениям.
Залез:
/* Timer Output Compare functions **********************************************/
HAL_StatusTypeDef HAL_TIM_OC_Init(TIM_HandleTypeDef *htim);
................
/**
* @brief TIM Time Base Handle Structure definition
*/
typedef struct
{
TIM_TypeDef *Instance; /*!< Register base address */
TIM_Base_InitTypeDef Init; /*!< TIM Time Base required parameters */
HAL_TIM_ActiveChannel Channel; /*!< Active channel */
DMA_HandleTypeDef *hdma[7]; /*!< DMA Handlers array
This array is accessed by a @ref DMA_Handle_index */
HAL_LockTypeDef Lock; /*!< Locking object */
__IO HAL_TIM_StateTypeDef State; /*!< TIM operation state */
}TIM_HandleTypeDef;
Ни больше ни меньше - столько же сколько и в описании на HAL drv.
Прошу прощения, но пока описания на HAL скупое.
Цитата(scifi @ Jan 7 2015, 15:50)

Занятный опус.
Но если спуститься с небес на землю, то таймер в STM32 - непростой зверь (что неудивительно, учитывая широкую функциональность). Каким таким образом какой-то HAL может сделать проще? Правильно - никаким, потому что вместе с упрощением уйдёт и часть функциональности. Остаётся сомнительная помощь в установке битов регистров. Сомнительная, потому что для этого достаточно иметь в заголовках дефайны с именами битов. Да и без этого меня совсем не напрягает, заглянув в мануал, расставить битики по местам. Зато при отладке есть полное понимание того, как это работает. И если вдруг что-то не работает, достаточно внимательно посмотреть на содержимое регистров, чтобы понять, что не так.
scifi, зверь сложный. Но не всегда нужно выжать из него все

. Есть же и простые типовые задачи. В любом случае, речь не о том "ты за HAL или против HAL"

. Речь о истине - где почитать чтобы понять что же делает в своих потрохах HAL, и что этот самый HAL ждет от пользователя в качестве исходных данных. Пока ситуацию можно описать так - "пользователь, ты мне дай все что есть, а я там сам сделаю как смогу". При этом пользователю не дано чего -либо ожидать кроме HAL_StatusTypeDef.
http://www.eevblog.com/forum/microcontroll...xx-hal-drivers/ нашел аналогичную темку.