stm32 串口发送数组 cpu可以工作吗
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了stm32 串口发送数组 cpu可以工作吗相关的知识,希望对你有一定的参考价值。
参考技术A 可以。STM32使用串口1配合DMA接收不定长数据,减轻CPU载荷,用STM32F103的串口1,并配置成空闲中断模式且使能DMA接收,并同时设置接收缓冲区和初始化DMA。那么初始化完成之后,当外部给单片机发送数据的时候,假设这帧数据长度是100个字节。
那么在单片机接收到一个字节的时候并不会产生串口中断,而是DMA在后台把数据默默地搬运到你指定的缓冲区里面。当整帧数据发送完毕之后串口才会产生一次中断,此时可以利用DMA下杠线GetCurrDataCounter,函数计算出本次的数据接受长度,从而进行数据处理。
STM32串口波特率怎么设置?使用库直接设置吗?像51那样寄存器的设置?
如果你仔细研究USART_Init()函数,你会发现,这程序在配置波特率时会读取RCC有关的寄存器来计算当前CPU实际的工作频率是多少,然后计算参数来实现你需要的波特率——就是说不管你把单片机设置为什么样的工作频率,这函数都能让串口以你要求的波特率工作。当然如果你把原来8M的晶振换掉了,那你就需要修改系统中的一个定义:在文件stm32f10x.h中的定义HSE_Value,这参数定义了单片机使用外部晶振或时钟源的频率,一般就是8000000,即使用的8MHz晶振。如果你的STM32用了什么7.3728、11.0592或者25MHz晶振时,你就要修改HSE_Value定义的值,这样保证串口通信波特率正确。 参考技术A 库里面有专门的函数可以设置波特率等参数,在stm32f10x_uart.c中有函数,或者你也可以参考芯片手册中的寄存器来进行设置,不过还是用库函数方便点~追问
使用库的时候,比如我想设置9600,就直接在串口初始化的时候写9600 不用管他的外部晶振吗?能看懂我说的意思吗? 比如要设置9600波特率,那么我外部晶振选择8MHZ 或者25MHZ的时候也一样直接使用库,在初始化的时候初始9600 感觉理不通!
以上是关于stm32 串口发送数组 cpu可以工作吗的主要内容,如果未能解决你的问题,请参考以下文章
STM32串口波特率怎么设置?使用库直接设置吗?像51那样寄存器的设置?