2014-09-05 1 views

ответ

4

"CMSIS" - Cortex Microcontroller Software Interface Standard. Это стандарт ARM, поэтому код должен быть более или менее переносимым между реализациями Cortex.

Периферийные библиотеки, как правило, более специфичны для поставщиков, поскольку нет стандарта для реализации двух разных поставщиков. таймер или блок UART.

По крайней мере, это мое основное понимание работы (в основном) с ARM в семействе STM32. Однако на этой странице CMSIS я заметил, что область для CMSIS на самом деле больше:

CMSIS-Driver: определяет общие интерфейсы периферийных драйверов для промежуточного программного обеспечения, что делает его многоразовым для поддерживаемых устройств. API является независимым от ОСРВ и подключает периферийные устройства микроконтроллеров со средним программным обеспечением, которое реализует, например, столы связи, файловые системы или графические пользовательские интерфейсы.

Это звучит, как это было бы делать то, что я связываю с конкретного производителя кода, но, возможно, не все производители на самом деле использование CMSIS-Driver еще.

ОБНОВЛЕНИЕ: На STM32: с, с которым я работал, GPIO управляется с использованием только периферийной библиотеки ST.

Это довольно просто, на самом деле:

  1. Использование RCC_AHB1PeriphClockCmd() для того, чтобы часы на GPIO Peripheral в. Есть много часов, поэтому убедитесь, что вы делаете это правильно. I думаю, все GPIO на AHB1.
  2. Инициализируйте переменную типа GPIO_InitTypeDef, позвонив по телефону GPIO_StructInit(), чтобы получить значения по умолчанию.
  3. Установите необходимые настройки в своем GPIO_InitTypeDef, переопределяя значения по умолчанию.
  4. Позвоните по номеру GPIO_Init() на соответствующем порту, также передавая его GPIO_InitTypeDef с вашими фактическими настройками. Это вызовет регистры в периферийном устройстве.
  5. Используйте вызовы, такие как GPIO_SetBits(), GPIO_ReadInputDataBit() и так далее, чтобы фактически использовать контакт GPIO.
+0

На самом деле я тоже думал, что-то вроде этого ... но на самом деле для меня кажется, что оба одинаковы. Но это не так. подходящий пример GPIO было бы хорошо знать. Я только начал STM32 за неделю до этого. Поэтому было бы полезно. – istiaq2379

+0

спасибо ... было приятно ... теперь я понял ... :) – istiaq2379

+0

Для Stm32F10x: 'RCC_APB2Periph ...', но для F2xx и F4xx: 'RCC_AHB1Periph ...' и IMHO для F30x:' RCC_AHBPeriph ... '. – Joe

0

Код CMSIS предназначен для контроллера ARM для разных поставщиков, таких как NXP (серия LPC и т. Д.) STM (STM32f4, stm32F1), в основном контроллер, имеющий архитектуру ARM. это портативное программное обеспечение. этот язык кодирования является C/C++ большую часть времени, но в некоторых языках используется ассемблер. обычно язык ассемблера используется в файлах запуска.

В периферийном драйвере код написан на языке c/C++. периферийный драйвер используется для связи.

Я в настоящее время работает на контроллере LPC18xx, используя драйвер CMSIS, драйвер CMSIS имеет код для всех периферийных устройств, вы можете использовать драйвер непосредственно для реализации приложения

, например: если вы хотите прочитайте данные с датчика, подключенного через I2C. вы можете напрямую использовать драйвер I2C Cmsis для реализации приложения.только вам нужно знать этот аппаратный адрес для датчика.

Аналогичным образом вы можете использовать драйвер SPI, CMSIS также обеспечивает драйвер RTOS.