意法半导体MCU是全球领先的半导体供应商,自成立以来已满足了市场上多元化的需求,提供了各行业领域范围半导体产品及解决方案.为了保持其技术优势,意法半导体坚定地致力于创新,约有7400人从事研发和产品设计工作,并在2018年将其收入的15%用于研发。STM32MCU被广泛应用在各种丰富的不同行业当中.为此本篇文章将介绍有关STM32底层配置的相关技术.
本文通过,介绍STM32主要的底层配置,通过关键步骤的程序源代码的介绍,阐述实现数据传输的细节以及注意事项。该方法对其他项目或芯片有一定的实现价值和参考价值,且简单可靠,具有普遍性和通用性。
1、STM32底层配置
为了实现STM32单片机与SIM900A模块之间的数据命令的传输,本文以串口为例,先搭建开发平台,在工程中加入相应的库函数以及配置文件,然后配置时钟以及串口相应的输入输出GPIO接口。在配置的同时,需要针对自身的原理图进行编写,才能保证配置正确无误。这样基本的开发平台就搭建起来了。
1.1、串口配置
在开发平台搭建起来之后,就可以对串口进行配置了。配置速率为115200b/s,字长为8bit,1bit停止位,串口模式为输入与输出模式,最后初始化相对应的串口。初始化串口之后,打开串口的中断响应函数,即USART_ITConfig(USART2,USART_IT_RXNE,ENABLE)(以串口2为例),然后使能相对应的串口,这样串口函数就基本配置完成了。需要注意一点,有些程序可能在传输的时候出现首位丢失。这个问题涉及到USART的机制。硬件复位之后,USART的状态位是置位的(置1,表示已经发送完毕),而此时数据可以进行正常发送。当一帧数据发送后,由硬件将该位置位。而清除TC位(置0)是由软件来完成的,通过先读USART_SR,再写USART_DR将该位清除。但是程序在发送第一帧数据的时候,并没有进行读USART_SR,而是直接进行写USART_DR,因此TC标志位还是置1,并没有清除。当发送第一帧数据之后,用USART_GetFlagStatus()检测状态返回的是已经发送完毕,程序就会马上发送下一帧数据,因此第一帧数据就会被第二帧数据覆盖了,这样就看不到首位数据。根据这种情况来说可以在每次传输之前或之后清除传输完成标志位,即USART_ClearFlag(USART2,USART_FLAG_TC)。
1.2、中断配置
配置完串口之后,将对NVIC进行配置。首次配置中断分组,然后选择串口的中断,即NVIC_InitStructure.NVIC_IRQChannel=USART2_IRQn(以所使用固件库的定义为主)。
再设置抢占式中断优先级和响应式中断优先级,然后使能中断和初始化。以上的配置必须结合自身的情况,设计出最优的中断分组和优先级,以保证程序响应中断的速度。中断后所做的内容在stm32f10x_it.c文件里配置。
MCU应用极其广泛,国内本土为了不再依附进口芯片而投身研发国内芯片。目前国内有着几家不错的厂商,已为市场提供上百种的MCU产品.例如灵动微电子,旗下产品MM32F系列可替换兼容STM32F系列.
关于上海灵动微电子
灵动微电子是国内专注于MCU产品与应用方案的领先供应商,自2011年3月成立至今,上海灵动微电子已经成功完成数百余个MCU产品的设计及推广,灵动微目前已批量供货的基于内核M0及Cortex-M3 内核的MCU产品包括:通用高性能市场的MM32F系列,超低功耗及安全应用的MM32L系列,具有多种无线连接功能的MM32W系列,电机及电源专用的MM32SPIN系列,以及OTP型的MM32P系列等,以满足客户及市场多领域、多层次的丰富应用场景需求。
来源:51CTO
作者:英尚微电子
链接:https://blog.51cto.com/14618340/2453646