STM32串口发送问题
来源:互联网 发布:ubuntu 无法识别新u盘 编辑:程序博客网 时间:2024/06/04 00:29
今天调试uart所有时钟配置,中断配置,串口配置都没有问题,但是就是发送不出来,原来是USART_SendData()连续发送数据时需要加发送中断标志位判断确保每一个数据都发送完成。
解决方法:在发送函数后面加上 while(USART_GetFlagStatus(USART1, USART_FLAG_TXE) == RESET);
全部代码如下
#include <stdio.h>#include "stm32f10x.h"#include "led.h"#include "delay.h"#include "key.h"#include "timer.h"#include "beep.h"//#include <string.h>unsigned char txBuff[10]={1,2,3,4,5,6,7,8,9,0};void Uart_Init(){ GPIO_InitTypeDef GPIO_InitStructure; USART_InitTypeDef USART_InitStructure; RCC_APB2PeriphClockCmd(RCC_APB2Periph_USART1|RCC_APB2Periph_GPIOA, ENABLE); //ʹÄÜUSART1£¬GPIOAʱÖÓ USART_DeInit(USART1); //¸´Î»´®¿Ú1 //USART1_TX PA.9 GPIO_InitStructure.GPIO_Pin = GPIO_Pin_9; //PA.9 GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP; //¸´ÓÃÍÆÍìÊä³ö GPIO_Init(GPIOA, &GPIO_InitStructure); //³õʼ»¯PA9 //USART1_RX PA.10 GPIO_InitStructure.GPIO_Pin = GPIO_Pin_10; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;//¸¡¿ÕÊäÈë GPIO_Init(GPIOA, &GPIO_InitStructure); //³õʼ»¯PA10 /* USARTx configured as follow: - BaudRate = 9600 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_Cmd(USART1, ENABLE); }void SendData(unsigned char *sendBuff){ int i=0; for(i=0;i<10;i++) { USART_SendData(USART1, sendBuff[i]); **while(USART_GetFlagStatus(USART1, USART_FLAG_TXE) == RESET);** }};int main(void){ Uart_Init();//´®¿Ú³õʼ»¯ LED_Init();//LED³õʼ»¯ KEY_Init();//°´¼ü³õʼ»¯ SysTick_Init();//ÑÓʱ³õʼ»¯ BEEP_Init(); //·äÃùÆ÷³õʼ»¯ while (1) { //ʹÓÃprintfº¯ÊýÑ»··¢Ë͹̶¨ÐÅÏ¢ //printf("\n\rUSART Printf Example: £¨µÂ·ÉÀ³£©ÄáĪM3S¿ª·¢°å´®¿Ú²âÊÔ³ÌÐò\r"); SendData( txBuff); Delay_ms(500); LED2_REV; }}
0 0
- STM32串口发送问题
- stm32串口发送数据出现问题
- STM32关于串口发送缓冲的问题
- STM32 串口发送数据
- STM32串口发送
- STM32串口发送中断
- STM32串口发送不正常
- stm32串口发送数据,丢失字节问题分析
- stm32串口发送数据,丢失字节问题分析
- STM32串口发送数据第一个字节丢失问题
- STM32串口打印printf发送中文乱码问题
- STM32 串口通讯 发送 接收
- Stm32串口发送字节数据
- Stm32串口发送字符串数据
- stm32串口-main实现发送
- STM32串口发送数据详解
- STM32的串口中断发送
- STM32串口接收发送子程序
- 在Bae上部署WebUploader出错
- (十一)javascript 动态改变元素的属性
- 9. 使用JdbcTemplate【从零开始学Spring Boot】
- 手机开发实战135——SyncML介绍4
- 一张图理解jquery中的尺寸问题
- STM32串口发送问题
- java网络编程
- Android Studio下jni应用
- 手机开发实战136——SyncML介绍5
- [BZOJ3754][JZOJ3410]【GDOI2014模拟】Tree
- spring事务隔离和传播机制的简单理解
- 手机开发实战137——PIM介绍1
- 手机开发实战138——PIM介绍2
- Android Sutdios使用jni配置