在CMSIS文件和外围驱动程序文件中编写什么样的代码。我怎么才能区分他们?任何例子都会更有帮助。谢谢。
发布于 2014-09-05 08:52:10
"CMSIS“是皮层微控制器软件接口标准。这是一个ARM标准,所以代码在Cortex实现之间应该或多或少是可移植的。
外设库通常更加特定于供应商,因为没有关于两个不同供应商如何实现的标准,例如计时器或UART块。
至少,这是我在STM32大家庭中(大部分)与手臂一起工作的基本理解。但是,我在CMSIS页面上注意到,CMSIS的范围实际上更大:
CMSIS-驱动程序:为中间件定义通用外围驱动程序接口,使其在受支持的设备上可重用。API与RTOS无关,并将微控制器外围设备与中间件连接起来,中间件实现了通信堆栈、文件系统或图形用户界面。
这听起来像是做了一些与特定于供应商的代码相关的事情,但也许并不是所有的供应商都真正使用CMSIS驱动程序。
UPDATE:在我使用过的ST 32:S上,只使用ST的外围库管理GPIO。
很简单,真的:
RCC_AHB1PeriphClockCmd()启用GPIO外围设备的时钟。有很多钟,所以一定要把它做好。我认为所有的GPIO都在AHB1上。GPIO_InitTypeDef上的GPIO_StructInit()来初始化一个类型为GPIO_StructInit()的变量以获得默认值。GPIO_InitTypeDef中设置真正想要的设置,根据需要覆盖默认设置。GPIO_Init(),并将实际设置传递给它GPIO_InitTypeDef。这将插入外围设备中的寄存器。GPIO_SetBits()、GPIO_ReadInputDataBit()等调用来实际使用GPIO引脚。发布于 2016-09-28 10:47:26
CMSIS代码是为不同厂商的ARM控制器编写的,如NXP (LPC系列等)。STM (STM32f4,stm32F1 )基本上是具有ARM结构的控制器。这是可移植的软件。这种编码语言大多是C/C++,但在某些文件中使用汇编语言。通常在启动文件中使用汇编语言。
外围驱动程序采用c/c++语言编写。外围驱动程序用于通信目的。
我目前正在开发LPC18xx控制器,使用CMSIS驱动程序,CMSIS驱动程序有所有外围设备的代码,可以直接使用驱动程序来实现应用程序。
例如:如果您想从通过I2C连接的传感器读取数据。您可以直接使用I2C Cmsis驱动程序实现应用程序。你只需要知道这是传感器的硬件地址。
类似地,您可以使用SPI驱动程序,CMSIS也提供RTOS驱动程序。
https://stackoverflow.com/questions/25681041
复制相似问题