STM32串口发送问题

发布者:EnchantedHeart最新更新时间:2016-06-14 来源: eefocus关键字:STM32  串口发送 手机看文章 扫描二维码
随时随地手机看文章
在串口1发送中,第一个字总是发不出来,单步调试发送正常,硬件上电复位发送不正常,发现是STM32上电复位后需要先读取 USART_SR,然后写 USART_DR,解决办法在串口初始化加入USART_GetFlagStatus(USART2, USART_FLAG_TC);

void USART1_Init(void)
{
GPIO_InitTypeDef GPIO_InitStructure;
USART_InitTypeDef USART_InitStructure;
// NVIC_InitTypeDef NVIC_InitStructure;


RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA RCC_APB2Periph_AFIO, ENABLE);
RCC_APB2PeriphClockCmd(RCC_APB2Periph_USART1, ENABLE);


GPIO_InitStructure.GPIO_Pin = GPIO_Pin_9;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_Init(GPIOA, &GPIO_InitStructure);


GPIO_InitStructure.GPIO_Pin = GPIO_Pin_10;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;
GPIO_Init(GPIOA, &GPIO_InitStructure);

// NVIC_InitStructure.NVIC_IRQChannel = USART1_IRQn;
// NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority=3 ;
// NVIC_InitStructure.NVIC_IRQChannelSubPriority = 3; //

// NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE; //
// NVIC_Init(&NVIC_InitStructure); 

// - BaudRate = 115200 baud
// - Word Length = 8 Bits
// - One Stop Bit
// - No parity
// - Hardware flow control disabled (RTS and CTS signals)
// - Receive and transmit enabled
USART_InitStructure.USART_BaudRate = 9600;
USART_InitStructure.USART_WordLength = USART_WordLength_8b;
USART_InitStructure.USART_StopBits = USART_StopBits_1;
USART_InitStructure.USART_Parity = USART_Parity_No;
USART_InitStructure.USART_HardwareFlowControl = USART_HardwareFlowControl_None;
USART_InitStructure.USART_Mode = USART_Mode_Rx USART_Mode_Tx;

USART_Init(USART1, &USART_InitStructure);

// USART_ITConfig(USART1, USART_IT_RXNE, ENABLE);//开启中断

 

USART_GetFlagStatus(USART1, USART_FLAG_TC);

}

关键字:STM32  串口发送 引用地址:STM32串口发送问题

上一篇:STM32 USART 普通串口应用,调试总结
下一篇:stm32 串口发送数据第一字节丢失

推荐阅读最新更新时间:2024-03-16 14:57

stm32上移植了ucos,现在需要使用到DS18B20采集温度
DS18B20的操作时序要使用到延时,我是用ucos的延时函数还是自己循环写一个延时? 现在有个问题:假如用ucos的延时函数,如果出现更高优先级的任务,那么会将读DS18B20这个任务挂起,会破坏DS18B20的时序操作,读不出来温度。这个延时我应该怎么处理? 分享到: 2012-08-14 08:40提问者采纳 第一 读取18B20的时候关闭任务切换,不进行任务调度 第二 通过任务通讯 互斥量 或者邮箱 让其他任务挂起 第三 关闭中断 第四 将操作18b20的任务优先级设置高点或者操作时提升其任务优先级 延时的话可以用ucos的延时函数 也可以自己写,不过还是用ucos的好 追问 谢
[单片机]
STM32上移植FreeModbus RTU的一点经验总结
这几天因为工作需要,移植了modbus RTU到STM32来,之前也听说过modbus,但是没有深入了解过,还以为会像usb 那样复杂的,经过这几天的折腾,发现真的太简单了。为了防止过段时间又忘记了怎么移植,在这里把移植过程记录下来,也为了方便初次接触modbus的人。 废话少说,首先去下载源码,我下载的是 freemodbus-v1.5.0 ,解压后如图所示: 在demo文件夹中有很多移植好的例子,但是没有STM32的,不要紧,我们参考已有的例子来操作就可以了。在demo文件夹下新建一个文件夹,命名为STM32,将BARE文件夹里的文件全部复制过来。 然后,我们建立一个STM32的工程,我用的是mdk4.72,关于怎
[单片机]
STM32之USART(one)
USART我们一般是用在调试程序时输出调试信息,或者是用来做串行通讯。 看到ST的手册USART的功能有多么强大,其实我们很少用到那么多功能,再者我对那些部分也不是很熟,所以我们先说一下我们最常用最简单的部分,以后如果用到其他的模式我们再来看,我们的内存是有限的,所以将这些最常用的知识常驻内存吧。 好了,那我们下边来看USART: 使USART正常使用,我们总结下步骤吧 1.要使用一个模块第一我们就要先时能相应的时钟,相应的,如果某个模块不再使用了要关闭相应的始终,这样的点点滴滴我们就能降低我们系统的功耗。 2.配置相应的引脚 3.配置USART的波特率,帧格式等 4.然后就是发送接收的事了
[单片机]
<font color='red'>STM32</font>之USART(one)
STM32 usb_core.c分析
usb_core.c这个c文件是个庞大的文件,主要是定义了usb2.0的标注协议处理函数。 下面是这个文件的所有函数: /******************************************************************************* * Function Name : Standard_GetConfiguration. * Description : 返回当前配置变量的地址 * Input : Length -需要的字节 How many bytes are needed. * Output : None. * Return : 如果'Length
[单片机]
基于STM32的实收实发超声波检测系统研究
1、引言 在高频的超声波数据采集及频率分析的应用中,通常会采用实收实发的系统来模拟收到信号,目前最经常采用的模式是使用下位机高速连续采样,上位机进行数据分析的模式,然后在将检测的信号通过D/A发送出去。这种模式可以完成M级甚至于G级的数据连续采样,目前已经在高速的工业信号采集中得到了广泛的应用。 提出基于STM32的实收实发系统,主控芯片采用目前最新的STM32F407芯片,属于ARM公司推出的最新一代低功耗高性能片上系统,内核为CORTexM4,最高主频可以到168MHz,内部采用ARM的精简指令集,单周期指令,并且集成了ARM公司的浮点DSP指令集,可以对数据进行信号滤波以及FFT运算,计算能力超过TI的200M主频的DS
[单片机]
基于<font color='red'>STM32</font>的实收实发超声波检测系统研究
stm32的ucosII加上ucGUI学习
一、学会使用Keil调试工具。 单步调试,跳过函数,跳出函数 可以快速定位到程序的bug位置 二、系统板级驱动要加载需要的函数 三、怎么一步步根据具体需要添加系统功能 程序开发过程 1、加入所用到的封装库 2、写板级驱动BSP 包括GPIO配置 时钟配置 所用到的各种初始化函数用同一的void BSP_Init(void)函数调用 3、编写stm32f10x_it.c文件,设置中断服务函数 4、建立任务,包括定义任务名(函数名),堆栈空间(一个数组),任务优先级(一个宏定义) 5、任务优先级的选择,不合理的优先级,会导致程序无法正常运行,例如有7个任务,界面任务,触摸任务,三个L
[单片机]
STM32 FSMC LCD 液晶的驱动—ILI9320
原来老早知道 STM32 具有 带4个片选的静态存储器控制器。支持CF卡、SRAM、PSRAM、NOR和NAND存储器 并行LCD接口,兼容8080/6800模式 这个其实就是FSMC 在这之前我一直使用IO口模拟8080时序感觉操作简单速度也很不错,而且ST官方上的FSMC的说明文档看得实在很晕找不到重点一直没试过FSMC。最近有机会尝试驱动驱动一块2.4的ILI9320由于要接线为了省力气直接使用了 FSMC的接法,顺便整理下写点东西出来。 我想使用12864液晶可能是每个会单片机的基本功了通常用个P0口发送8Bit数据在用一些控制线产生时钟信号,12864使用6800通信方式而小的彩色FTF 或CSTN屏流行8080通信
[单片机]
基于STM32设计的四轴飞行器飞控系统
引言 四轴飞行器是一种结构紧凑、飞行方式独特的垂直起降式飞行器,与普通的飞行器相比具有结构简单,故障率低和单位体积能够产生更大升力等优点,在军事和民用多个领域都有广阔的应用前景,非常适合在狭小空间内执行任务。因此四旋翼飞行器具有广阔的应用前景,吸引了众多科研人员,成为国内外新的研究热点。 本设计主要通过利用惯性测量单元(IMU)姿态获取技术、PID电机控制算法、2.4G无线遥控通信技术和高速空心杯直流电机驱动技术来实现简易的四轴方案。整个系统的设计包括飞控部分和遥控部分,飞控部分采用机架和控制核心部分一体设计增加系统稳定性,遥控部分采用模拟摇杆操作输入使操作体验极佳,两部分之间的通信采用2.4G无线模块保证数据稳定传输。飞
[单片机]
基于<font color='red'>STM32</font>设计的四轴飞行器飞控系统
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved