正点大哥 我是个初学者 想问个问题 用的是你的板子 我用库函数写的串口发送程序 不知为什么 老是出现乱码 调试时 发现波特率写不进去 比如说 波特率9600 可波特率寄存器里显示 0x15a6,也就是122991 库函数是v3.1.0 编译器是MDK4.0 延时函数用的是你写的
关于串口的代码 :
SystemInit(); //配置系统时钟
SysTick_Initaize(); //SysTick初始化
RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO, ENABLE); //AFIO使能
GPIO_PinRemapConfig(GPIO_Remap_SWJ_JTAGDisable , ENABLE); //JTAG失能 SW-DP使能
RCC_APB2PeriphClockCmd(RCC_APB2Periph_USART1, ENABLE); //USART使能
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA,ENABLE); //使用外部时钟8M 系统时钟72M
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_9; //指定某一端口
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP; //复用推免输出-TX
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; //浮空输入-RX
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; //端口传输最大速率
GPIO_Init(GPIOA, &GPIO_InitStructure); //外设端口初始化
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_ClockInitStructure.USART_Clock = USART_Clock_Disable;
USART_ClockInitStructure.USART_CPOL = USART_CPOL_Low;
USART_ClockInitStructure.USART_CPHA = USART_CPHA_2Edge;
USART_ClockInitStructure.USART_LastBit = USART_LastBit_Disable;
USART_ClockInit(USART1, &USART_ClockInitStructure);
USART_Init(USART1, &USART_InitStructure); //根据USART_InitStruct中指定的参数初始化外设USARTx寄存器
USART_Cmd(USART1, ENABLE); //启用
|