主函数请直接关注41行到47行代码!!

 #include "stm32f10x.h"   // 相当于51单片机中的  #include <reg51.h>
#include "stm32f10x_gpio.h"
#include "stm32f10x_usart.h"
#include "led.h"
#include "key.h"
#include "key interrupt.h"
#include "delay.h"
#include "usart1.h"
#include "stdio.h"
#include "usart.h" int main()
{
/*
* 一、点亮一个LED灯
*/ /*点亮一个LED灯*/
//red_on();//红灯
//green_on();//绿灯
//blue_on();//蓝灯 /*
* 二、按键通过按键实现控制led的亮灭(有两种情况)
*/ //key1();
//key2();
//key3(); /*
* 三、按键K1,K2中断控制LED亮灭
*/ //interrupt();//详细代码见key interrupt.c文件 /*
* 四、串口
*/ usart1_config(); //串口初始化
USART_SendData(USART1,'A'); //发送数据A
printf("kinson\n"); //用printf打印数据kinson,说明:printf默认打印输出在控制台,现在修改源码打印输出至串口
while(); /*
* 五、 Systick时钟定时
*/ /*
SystemInit();//初始化系统,使得系统频率为72兆 //配置Systick为10us中断一次,时间到后触发定时中断
//进入stm32fxx_it.c文件的SysTick_Handle处理,通过数中断次数计时 led_gpio_init();//LED端口初始化
while(1)
{ GPIO_Setbits(GPIO,GPIO_Pin_15);
delay_ms(1000);//延时
GPIO_ResetBits(GPIO,GPIO_Pin_15);
delay_ms(1000);//延时
while(1);
}
*/
}

新建一个文件配置串口usart相关的配置

 #include "usart1.h"
#include "stm32f10x.h"//相当于stdio头文件
#include "stm32f10x_gpio.h"//配置GPIO要用的头文件
#include "stm32f10x_usart.h"//配置串口usart要用的头文件
#include "misc.h" //配置中断NVIC要用的头文件
#include "stdio.h" //为printf所用 /*串口1的配置函数*/
void usart1_config()
{
//第一步:时钟配置(GPIO时钟,串口时钟)
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA|RCC_APB2Periph_USART1|RCC_APB2Periph_AFIO,ENABLE);
//第二步,GPIO配置,Rx(接受)为PA10,Tx(发送)为PA9
GPIO_InitTypeDef a; //定义结构体
/*配置PA9为复用推挽输出*/
a.GPIO_Pin=GPIO_Pin_9; //端口9,依据来源看电路图
a.GPIO_Speed=GPIO_Speed_50MHz;
a.GPIO_Mode=GPIO_Mode_AF_PP; //复用推挽输出
GPIO_Init(GPIOA,&a); //初始化 /*配置PA10为浮空输入*/
a.GPIO_Pin=GPIO_Pin_10;
a.GPIO_Mode=GPIO_Mode_IN_FLOATING; //浮空输入
a.GPIO_Speed=GPIO_Speed_50MHz;
GPIO_Init(GPIOA,&a); //第二步:NVIC配置
/*NVIC嵌套向量中断控制器*/
NVIC_PriorityGroupConfig(NVIC_PriorityGroup_1); //优先级配置
NVIC_InitTypeDef b;
b.NVIC_IRQChannel = USART1_IRQn;//USART1_IRQn串口中断
b.NVIC_IRQChannelPreemptionPriority = ;//0 1 2 3 4
b.NVIC_IRQChannelSubPriority = ;//0 1 2 3 4
b.NVIC_IRQChannelCmd = ENABLE; //使能
NVIC_Init(&b); //第三步:串口配置
USART_InitTypeDef c;
c.USART_BaudRate=; //波特率
c.USART_HardwareFlowControl=USART_HardwareFlowControl_None;//硬件控制流
c.USART_Mode=USART_Mode_Rx|USART_Mode_Tx; //模式,此模式为发送和接受
c.USART_WordLength=USART_WordLength_8b;//字长8
c.USART_Parity=USART_Parity_No; //奇偶校验n
c.USART_StopBits=USART_StopBits_1; //停止位1
USART_Init(USART1,&c);
//第四步:串口时能
USART_Cmd(USART1,ENABLE);
} /*以下代码为printf能在发送数据给串口所用*/
int fputc(int ch,FILE* ffdsfa)
{
USART_SendData(USART1,ch);
while(USART_GetFlagStatus(USART1,USART_FLAG_TXE) == RESET);//等待发送完成
return ch;
}

新建.h文件(不同文件之间的函数调用必须掌握的知识点)

 #ifndef _USART1_H_
#define _USART1_H_ void usart1_config(); #endif
04-16 05:21