久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 2463|回復: 0
打印 上一主題 下一主題
收起左側

STM32f1的Usart的應用

[復制鏈接]
跳轉到指定樓層
樓主
ID:113276 發表于 2016-4-10 14:35 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
測試背景:Device--Stm32f103vet6--Usart1;MDK5說明:在嵌入式方面,串口通信有著不可替代的優勢,每當我們入手一塊新型的單片機時,往往會先學習”點燈大法(IO口)“,然后學習串口通信,毫不夸張的說,串口相當于單片機的一雙眼睛,通過這雙眼睛,可以監視單片機的運行情況,及時發現問題,加快學習的速度。本篇文章以Stm32f103vet6的Usart1為例來舉例說明如何利用串口中斷與上位機進行簡單通信,以為筆記。(后附程序)
主要有以下幾個步驟:
1、系統時鐘的配置:本文系統時鐘設置為72M,并開啟Usart1的時鐘;
2、IO口的配置:PA9h和PA10;
3、Usart的配置:本文波特率115200;
4、中斷優先級的設置。
下為程序代碼:

//主函數文件
#include"stm32f10x_lib.h"

voidRCC_Configuration(void);
voidGPIO_Configuration(void);
voidUSART_Configuration(void);
voidNVIC_Configuration(void);

int main(void)
{
  
   RCC_Configuration();
  
   GPIO_Configuration();
  
   USART_Configuration();
  
NVIC_Configuration();
   while(1)
   {
      
   }
}

voidRCC_Configuration(void)
{
  
   ErrorStatus HSEStartUpStatus;
   
  
   RCC_DeInit();
  
   RCC_HSEConfig(RCC_HSE_ON);
  
   HSEStartUpStatus = RCC_WaitForHSEStartUp();
  
   if(HSEStartUpStatus == SUCCESS)
   {
   
   RCC_HCLKConfig(RCC_SYSCLK_Div1);
   
   RCC_PCLK2Config(RCC_HCLK_Div1);
   
   RCC_PCLK1Config(RCC_HCLK_Div2);
   
   FLASH_SetLatency(FLASH_Latency_2);
   
   FLASH_PrefetchBufferCmd(FLASH_PrefetchBuffer_Enable);
   
   RCC_PLLConfig(RCC_PLLSource_HSE_Div1,RCC_PLLMul_9);
   
   RCC_PLLCmd(ENABLE);
   
   while(RCC_GetFlagStatus(RCC_FLAG_PLLRDY) ==RESET);
   
   RCC_SYSCLKConfig(RCC_SYSCLKSource_PLLCLK);
   
   while(RCC_GetSYSCLKSource() != 0x08);
   }   
  
   RCC_APB2PeriphClockCmd(RCC_APB2Periph_USART1| RCC_APB2Periph_GPIOA, ENABLE);
}


voidGPIO_Configuration(void)
{
  
   GPIO_InitTypeDef GPIO_InitStructure;
   
  
   GPIO_InitStructure.GPIO_Pin = GPIO_Pin_9;
   GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;
   GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
   GPIO_Init(GPIOA , &GPIO_InitStructure);
   
  
   GPIO_InitStructure.GPIO_Pin = GPIO_Pin_10;
   GPIO_InitStructure.GPIO_Mode =GPIO_Mode_IN_FLOATING;
   GPIO_Init(GPIOA , &GPIO_InitStructure);
}


voidUSART_Configuration(void)
{
  
   USART_InitTypeDef USART_InitStructure;
   
   USART_InitStructure.USART_BaudRate = 115200;
   USART_InitStructure.USART_WordLength =USART_WordLength_8b;
   USART_InitStructure.USART_StopBits =USART_StopBits_1;
   USART_InitStructure.USART_Parity = USART_Parity_No ; //奇偶校驗失能
   USART_InitStructure.USART_HardwareFlowControl =USART_HardwareFlowControl_None;
   USART_InitStructure.USART_Mode = USART_Mode_Rx |USART_Mode_Tx;
   USART_Init(USART1 , &USART_InitStructure);
   
//使能USART1接收中斷
USART_ITConfig(USART1, USART_IT_RXNE, ENABLE); //接收中斷使能
  
   USART_Cmd(USART1 , ENABLE);
}

voidNVIC_Configuration(void)
{
NVIC_InitTypeDefNVIC_InitStructure;

  
#ifdef  VECT_TAB_RAM
  
NVIC_SetVectorTable(NVIC_VectTab_RAM ,0x0);
#else
  
NVIC_SetVectorTable(NVIC_VectTab_FLASH , 0x0);  
#endif
  
NVIC_PriorityGroupConfig(NVIC_PriorityGroup_0);
  
  
NVIC_InitStructure.NVIC_IRQChannel =USART1_IRQChannel;
NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority =0;
NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0;
NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
NVIC_Init(&NVIC_InitStructure);
}


//中斷函數
voidUSART1_IRQHandler(void)
{

//接收中斷(接收寄存器非空)
if(USART1->SR & (1<<5))
{
USART_SendData(USART1 ,USART_ReceiveData(USART1));  //發送數據
}
}








分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

手機版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 亚洲视频免费在线播放 | 国产一区二区三区免费视频 | 国产精品日韩欧美 | 国产高清性xxxxxxxx | 久久免费观看视频 | 一级毛片免费 | 亚洲a视频 | www.亚洲免费| 欧美日韩国产精品一区 | 亚洲国产成人精品久久久国产成人一区 | 一区二区三区影院 | 欧美视频在线一区 | 最新中文字幕在线播放 | 视频一区中文字幕 | 国产精品久久久久aaaa樱花 | 97久久精品午夜一区二区 | 国产91在线播放 | 自拍偷拍亚洲欧美 | 亚洲h视频 | 亚洲国产情侣 | 国产精品网址 | 四虎影院免费在线播放 | 久久久视| 成人中文字幕在线 | 成人性视频在线播放 | 亚洲综合色站 | 久久99精品久久久97夜夜嗨 | 别c我啊嗯国产av一毛片 | 欧美精品在欧美一区二区少妇 | 视频在线一区二区 | 日韩国产一区二区三区 | 国产成人精品一区二 | 色888www视频在线观看 | 在线一区二区国产 | 亚洲精选久久 | 成人欧美日韩一区二区三区 | 337p日韩| 婷婷毛片| 一区二区三区不卡视频 | 久久久久久91 | 亚洲最大av网站 |