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\n");                        //用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

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2026 CODEPRJ.COM