我用的是PC10和PC11的UART3,配置代码如下: RCC_APB1PeriphClockCmd(RCC_APB1Periph_USART3, ENABLE); GPIO_PinAFConfig(GPIOC, GPIO_PinSource10, GPIO_AF_USART3); GPIO_PinAFConfig(GPIOC, GPIO_PinSource11, GPIO_AF_USART3); /* Configure USART Tx as alternate function */ GPIO_InitStructure.GPIO_OType = GPIO_OType_PP; GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_UP; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF; GPIO_InitStructure.GPIO_Pin = GPIO_Pin_10; GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; GPIO_Init(GPIOC, &GPIO_InitStructure); /* Configure USART Rx as alternate function */ GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF; GPIO_InitStructure.GPIO_Pin = GPIO_Pin_11; GPIO_Init(GPIOC, &GPIO_InitStructure); USART_InitStructure.USART_BaudRate =9600; //波特率 USART_InitStructure.USART_WordLength = USART_WordLength_8b; //8 位数据 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; // 发送/接收使能 /* Configure and enable the USART */ USART_Init(USART3, &USART_InitStructure); /* Enable the USART Receive interrupt */ USART_ITConfig(USART3, USART_IT_RXNE, ENABLE); USART_Cmd(USART3, ENABLE); /* Enable USART Interrupt */ NVIC_InitStructure.NVIC_IRQChannel = USART3_IRQn; NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0; NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0; NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE; NVIC_Init(&NVIC_InitStructure); 结果 USART_SendData(USART3, *(Buf + i) ); while(USART_GetFlagStatus(USART3, USART_FLAG_TXE) == RESET); 就一直停在这里了,TXE不置位,USART3的DR寄存器一直位0。不知道是什么原因 |
STM32F407 定时器触发DMA 求助大神
【MCU实战经验】基于STM32F407的音频播放器设计
盘古UE-STM32F407工控板原理图
【STM32F429心得\疑问】+STM32F4之FSMC和FMC
STM32F429读取IO口传输的数据速率
STM32F407ZGT6 手摸芯片背部重启
STM32F4 SPI 动作时,软件片选信号被拉高,IO口程序逻辑失控
STM32F401RE NUCLEO求助,串口一直不能进中断
读取STM32F407内部温度传感器值错误
STM32F429多路内部ADC独立采集的办法
usart.rar
2014-10-28 21:27 上传
点击文件名下载附件
下载积分: ST金币 -1895.98 KB, 下载次数: 603, 下载积分: ST金币 -1
还是不行??
但是我不用中断发送的,查询发送。while(USART_GetFlagStatus(USART1, USART_FLAG_TXE) == RESET);这个也是例程里的,当把数据送缓冲区时TXE应该置1,然后发送完了变0. 但是我数据送缓冲区后TXE不会置位。用示波器测试实际也没有数据发出
时的,单独用你的例程是可以的。放到我的程序里去就不行了
USART配置和其他配置是不是要有先后顺序啊?
不应该有先后顺序的,你检查一下看是不是后面的配置把什么关了,引起串口通信失败的