留个记号,方便自己查看,也方便他人参考!!STM32F103用的IAR编译器
网上的教程搞得太复杂了,我的可能更简单!!
main.h内文件:
#include <stm32f10x.h> //使用外部HSE.8M,经过PLL倍频到72M
#include <misc.h> //嵌套中断控器,SYSTICK定时器
#include <stm32f10x_it.h> //管理中断服务函数
#include <stm32f10x_conf.h>
void GPIOx_Init(void)
{
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE); //0 打开GPIOA的外设时钟
GPIO_InitTypeDef GPIO_InitStructure1 = { GPIO_Pin_2|GPIO_Pin_9, //1 参数PIN2 PA2是UART2的TX引脚, PA9是UART1的TX引脚.
GPIO_Speed_10MHz, //2 参数2M速度
GPIO_Mode_AF_PP }; //3 参数复用推挽输出用Out_PP不行的 要用AF_PP复用模式
GPIO_Init(GPIOA, &GPIO_InitStructure1); //4 将3个参数初始化到GPIOA
}
void USARTx_Config(void)
{
RCC_APB1PeriphClockCmd(RCC_APB1Periph_USART2, ENABLE);// 打开串口2的外设时钟
RCC_APB2PeriphClockCmd(RCC_APB2Periph_USART1, ENABLE);// 打开串口1的外设时钟
//6个参数设置
USART_InitTypeDef USART_InitStructure = { 115200, //串口2波特率设置
USART_WordLength_8b, //数据长8BIT
USART_StopBits_2, //停止位是2BIT
USART_Parity_No, //无校验位
USART_Mode_Tx, //TX发模式
USART_HardwareFlowControl_None };//硬件流控制NONE
USART_Init(USART2, &USART_InitStructure); //将6个参数初始化到串口2
USART_Cmd(USART2, ENABLE); //配好后打开串口2外设,
USART_ITConfig(USART2, USART_IT_TC,DISABLE); //关掉UART2的中断,RA2为TX引脚。
USART_Init(USART1, &USART_InitStructure); //将6个参数初始化到串口1
USART_Cmd(USART1, ENABLE); //配好后打开串口1外设,
USART_ITConfig(USART1, USART_IT_TC,DISABLE); //关掉UART1的中断,RA9为TX引脚。
}
void Delay(__IO uint32_t nCount)//精略的延时功能
{
for(; nCount != 0; nCount--);
}
/**************************************************************/
main.c内文件测试
#include "main.h"
#include <stdio.h>
#include <string.h>
void
main(void)
{
USARTx_Config(); //初始化USARTx
GPIOx_Init(); //初始化GPIOX
while (1)
{
USART_SendData(USART2, 0xAA);//RA2输出
Delay(60000);//精略延时。
USART_SendData(USART1, 0x55);//RA9输出
__NOP();
}
}