留個記號,方便自己查看,也方便他人參考!!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();
}
}