STM32串口usart发送数据

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

 1 #include "stm32f10x.h"   // 相当于51单片机中的  #include <reg51.h>
 2 #include "stm32f10x_gpio.h"
 3 #include "stm32f10x_usart.h"
 4 #include "led.h"
 5 #include "key.h"
 6 #include "key interrupt.h"
 7 #include "delay.h"
 8 #include "usart1.h"
 9 #include "stdio.h"
10 #include "usart.h"
11 
12 int main()
13 {
14     /*
15     *                            一、点亮一个LED灯
16     */
17     
18                                 /*点亮一个LED灯*/
19 //red_on();//红灯
20 //green_on();//绿灯
21 //blue_on();//蓝灯
22                                 
23 /*
24 *                                二、按键通过按键实现控制led的亮灭(有两种情况)
25 */    
26 
27 //key1();
28 //key2();
29 //key3();    
30     
31 /*
32 *                                三、按键K1,K2中断控制LED亮灭
33 */
34 
35 //interrupt();//详细代码见key interrupt.c文件    
36 
37 /*
38 *                           四、串口
39 */
40 
41   usart1_config();                            //串口初始化
42     USART_SendData(USART1,'A');        //发送数据A
43     printf("kinson
");                        //用printf打印数据kinson,说明:printf默认打印输出在控制台,现在修改源码打印输出至串口
44     while(1);
45     
46 
47 /*
48 *                                五、    Systick时钟定时
49 */                                
50 
51 /*
52      SystemInit();//初始化系统,使得系统频率为72兆
53      
54      //配置Systick为10us中断一次,时间到后触发定时中断
55      //进入stm32fxx_it.c文件的SysTick_Handle处理,通过数中断次数计时
56    
57    led_gpio_init();//LED端口初始化
58    while(1)
59    {
60    
61    GPIO_Setbits(GPIO,GPIO_Pin_15);
62    delay_ms(1000);//延时
63    GPIO_ResetBits(GPIO,GPIO_Pin_15);
64    delay_ms(1000);//延时
65         while(1);
66      }
67      */
68 }

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

 1 #include "usart1.h"
 2 #include "stm32f10x.h"//相当于stdio头文件
 3 #include "stm32f10x_gpio.h"//配置GPIO要用的头文件
 4 #include "stm32f10x_usart.h"//配置串口usart要用的头文件
 5 #include "misc.h"                        //配置中断NVIC要用的头文件
 6 #include "stdio.h"                    //为printf所用
 7 
 8 /*串口1的配置函数*/
 9 void usart1_config()
10 {
11     //第一步:时钟配置(GPIO时钟,串口时钟)
12     RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA|RCC_APB2Periph_USART1|RCC_APB2Periph_AFIO,ENABLE);
13     //第二步,GPIO配置,Rx(接受)为PA10,Tx(发送)为PA9
14     GPIO_InitTypeDef a;                        //定义结构体
15     /*配置PA9为复用推挽输出*/
16     a.GPIO_Pin=GPIO_Pin_9;                //端口9,依据来源看电路图
17     a.GPIO_Speed=GPIO_Speed_50MHz;
18     a.GPIO_Mode=GPIO_Mode_AF_PP;        //复用推挽输出
19     GPIO_Init(GPIOA,&a);                        //初始化
20     
21     /*配置PA10为浮空输入*/
22     a.GPIO_Pin=GPIO_Pin_10;
23     a.GPIO_Mode=GPIO_Mode_IN_FLOATING;    //浮空输入
24     a.GPIO_Speed=GPIO_Speed_50MHz;
25     GPIO_Init(GPIOA,&a);
26     
27     //第二步:NVIC配置
28         /*NVIC嵌套向量中断控制器*/
29     NVIC_PriorityGroupConfig(NVIC_PriorityGroup_1);    //优先级配置
30     NVIC_InitTypeDef b;
31     b.NVIC_IRQChannel = USART1_IRQn;//USART1_IRQn串口中断
32     b.NVIC_IRQChannelPreemptionPriority = 1;//0 1 2 3 4 
33     b.NVIC_IRQChannelSubPriority = 1;//0 1 2 3 4 
34     b.NVIC_IRQChannelCmd = ENABLE;        //使能
35     NVIC_Init(&b);
36     
37     //第三步:串口配置
38     USART_InitTypeDef c;
39     c.USART_BaudRate=9600;        //波特率
40     c.USART_HardwareFlowControl=USART_HardwareFlowControl_None;//硬件控制流
41     c.USART_Mode=USART_Mode_Rx|USART_Mode_Tx;        //模式,此模式为发送和接受
42     c.USART_WordLength=USART_WordLength_8b;//字长8
43     c.USART_Parity=USART_Parity_No;                 //奇偶校验n
44     c.USART_StopBits=USART_StopBits_1;            //停止位1
45     USART_Init(USART1,&c);
46     //第四步:串口时能
47     USART_Cmd(USART1,ENABLE);    
48 }    
49     
50     
51     
52     
53     /*以下代码为printf能在发送数据给串口所用*/
54 int fputc(int ch,FILE* ffdsfa)
55 {
56     USART_SendData(USART1,ch);
57     while(USART_GetFlagStatus(USART1,USART_FLAG_TXE) == RESET);//等待发送完成
58     return  ch;
59 }    
60 
61     
62     
63     
64     
65     
66     

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

1 #ifndef _USART1_H_
2 #define _USART1_H_
3 
4 void usart1_config();
5 
6 
7 #endif
原文地址:https://www.cnblogs.com/kinson/p/7898359.html