我使用串口1,仅发送数据,发不出数据,但是用中断收发是正常的,调用的是库函数,不知道哪里处理问题,请指教,程序如下:#include "sys.h"
#include "delay.h"
#include "usart.h"
//#include "adc.h"
void My_USART1_Init(void)
{
GPIO_InitTypeDef GPIO_InitStructure;
USART_InitTypeDef USART_InitStruct;
RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOB, ENABLE);//使能GPIOB时钟
RCC_APB2PeriphClockLPModeCmd(RCC_APB2Periph_USART1, ENABLE);//使能USART1时钟
GPIO_PinAFConfig(GPIOB, GPIO_PinSource6, GPIO_AF_USART1);//把PB6映射到串口1
GPIO_PinAFConfig(GPIOB, GPIO_PinSource7, GPIO_AF_USART1);//把PB7映射到串口1
GPIO_InitStructure.GPIO_Pin=GPIO_Pin_6;//PB6
GPIO_InitStructure.GPIO_Mode=GPIO_Mode_AF;//复用功能
GPIO_InitStructure.GPIO_OType=GPIO_OType_PP;//推挽输出
GPIO_InitStructure.GPIO_PuPd=GPIO_PuPd_UP;//上拉
GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz;//速度50MHz
GPIO_Init(GPIOB, &GPIO_InitStructure);//初始化PB6口
GPIO_InitStructure.GPIO_Pin=GPIO_Pin_7;//PB7
GPIO_InitStructure.GPIO_Mode=GPIO_Mode_AF;//复用功能
GPIO_InitStructure.GPIO_OType=GPIO_OType_PP;//推挽输出
GPIO_InitStructure.GPIO_PuPd=GPIO_PuPd_UP;//上拉
GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz;//速度50MHz
GPIO_Init(GPIOB, &GPIO_InitStructure);//初始化PB7口
USART_InitStruct.USART_BaudRate=2400;//波特率9600
USART_InitStruct.USART_WordLength=USART_WordLength_8b;//字长8位
USART_InitStruct.USART_StopBits=USART_StopBits_1;//1位停止位
USART_InitStruct.USART_Parity=USART_Parity_No;//不进行奇偶校验
USART_InitStruct.USART_HardwareFlowControl=USART_HardwareFlowControl_None;//不使用硬件流
USART_InitStruct.USART_Mode=USART_Mode_Tx; //仅使能发送
USART_Init(USART1, &USART_InitStruct);//初始化串口1
USART_Cmd(USART1, ENABLE);//使能串口1
}
int main(void) //主函数
{
My_USART1_Init(); //初始化串口1
while(1)
{
USART_SendData(USART1, 0x55); //发送X轴信号
while(USART_GetFlagStatus(USART1, USART_FLAG_TXE) == RESET)
{} //等待发送数据寄存器为空
}
}
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
USART_SendData(USART1, 0x55);
while(USART_GetFlagStatus(USART1, USART_FLAG_TXE) == RESET)
{} //等待发送数据寄存器为空
GPIO_InitStructure.GPIO_Pin=GPIO_Pin_6;//PB6
GPIO_InitStructure.GPIO_Mode=GPIO_Mode_AF;//复用功能
GPIO_InitStructure.GPIO_OType=GPIO_OType_PP;//推挽输出
GPIO_InitStructure.GPIO_PuPd=GPIO_PuPd_UP;//上拉
GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz;//速度50MHz
GPIO_Init(GPIOB, &GPIO_InitStructure);//初始化PB6口
GPIO_InitStructure.GPIO_Pin=GPIO_Pin_7;//PB7
GPIO_InitStructure.GPIO_Mode=GPIO_Mode_AF;//复用功能
GPIO_InitStructure.GPIO_OType=GPIO_OType_PP;//推挽输出
GPIO_InitStructure.GPIO_PuPd=GPIO_PuPd_UP;//上拉
GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz;//速度50MHz
GPIO_Init(GPIOB, &GPIO_InitStructure);//初始化PB7口
这个GPIO初始化两段合并,你试一下参照原子的串口例程。改一下,看行不行。
太感谢了,一语中的。
一周热门 更多>