打印

基于意法半导体MCU STM32的底层配置

[复制链接]
381|5
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
本文通过介绍意法半导体MCUSTM32主要的底层配置,通过关键步骤的程序源代码的介绍,阐述实现数据传输的细节以及注意事项。该方法对其他项目或芯片有一定的实现价值和参考价值,且简单可靠,具有普遍性和通用性。

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文件里配置。

使用特权

评论回复
沙发
观海| | 2020-5-6 17:43 | 只看该作者
非常感谢楼主分享

使用特权

评论回复
板凳
guanjiaer| | 2020-5-6 17:43 | 只看该作者
好像还没说完吧

使用特权

评论回复
地板
heimaojingzhang| | 2020-5-6 17:43 | 只看该作者
还有时钟配置呢啊

使用特权

评论回复
5
keaibukelian| | 2020-5-6 17:44 | 只看该作者
io口的配置是不是也应该是必须的啊

使用特权

评论回复
6
labasi| | 2020-5-6 17:44 | 只看该作者
资料很不错

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

370

主题

370

帖子

0

粉丝