留个记号,方便自己查看,也方便他人参考!!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(); } }