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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

USART接收發送數據(可以中斷可以查詢發送接收數據)

[復制鏈接]
跳轉到指定樓層
樓主
ID:73735 發表于 2015-2-19 00:14 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式

#include "stm32f10x_lib.h"
//#define TxBufferSize   (countof(TxBuffer) - 1)
//#define RxBufferSize   0x65
//#define countof(a)   (sizeof(a) / sizeof(*(a)))
//u8 TxBuffer[] = "\n\r Stm32.USART->Computer \n\n\r";
//u8 RxBuffer[RxBufferSize];
//u8 NbrOfDataToTransfer = TxBufferSize;
//u8 NbrOfDataToRead = RxBufferSize;
//u8 TxCounter = 0;
//u16 RxCounter = 0;
USART_InitTypeDef USART_InitStructure;
ErrorStatus HSEStartUpStatus;
void RCC_Configuration(void);
void GPIO_Configuration(void);
void NVIC_Configuration(void);
u32 USART_Scanf(u32 value);
int main(void)
{
#ifdef DEBUG
  debug();
#endif
  RCC_Configuration();
  NVIC_Configuration();
  GPIO_Configuration();
  
  USART_InitStructure.USART_BaudRate = 9600;
  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_InitStructure.USART_Clock = USART_Clock_Disable;
  USART_InitStructure.USART_CPOL = USART_CPOL_Low;
  USART_InitStructure.USART_CPHA = USART_CPHA_2Edge;
  USART_InitStructure.USART_LastBit = USART_LastBit_Disable;
  
  USART_Init(USART1, &USART_InitStructure);       /* Configure the USART1 */
  USART_ITConfig(USART1, USART_IT_TXE, ENABLE);   /* Enable the USART Transmoit interrupt: this interrupt is generated when the USART1 transmit data register is empty */
  USART_ITConfig(USART1, USART_IT_RXNE, ENABLE);  /* Enable the USART Receive interrupt: this interrupt is generated when the USART1 receive data register is not empty */
  USART_Cmd(USART1, ENABLE);                      /* Enable USART1 */
  
  while (1)
  {
    /*
    if(USART_GetITStatus(USART1, USART_IT_RXNE) != RESET)
    {
   
    RxBuffer[RxCounter++] = (USART_ReceiveData(USART1) & 0xFF);   
    USART_SendData(USART1, RxBuffer[RxCounter-1]);
    USART_ClearITPendingBit(USART1, USART_IT_RXNE);
    if(RxCounter == NbrOfDataToRead)
      {
      USART_ITConfig(USART1, USART_IT_RXNE, DISABLE);
      }
    }
  if(USART_GetITStatus(USART1, USART_IT_TXE) != RESET)
   {
    USART_SendData(USART1, TxBuffer[TxCounter++]);   
    USART_ClearITPendingBit(USART1, USART_IT_TXE);
    if(TxCounter == NbrOfDataToTransfer)
    {
      USART_ITConfig(USART1, USART_IT_TXE, DISABLE);
    }   
   }*/
   
  }
  
}
void RCC_Configuration(void)
{               
  RCC_DeInit();
  RCC_HSEConfig(RCC_HSE_ON);
  HSEStartUpStatus = RCC_WaitForHSEStartUp();
  if(HSEStartUpStatus == SUCCESS)
  {
    FLASH_PrefetchBufferCmd(FLASH_PrefetchBuffer_Enable);
    FLASH_SetLatency(FLASH_Latency_2);
    RCC_HCLKConfig(RCC_SYSCLK_Div1);
    RCC_PCLK2Config(RCC_HCLK_Div1);
    RCC_PCLK1Config(RCC_HCLK_Div2);
    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)
    {
    }
  }
   
  /* Enable GPIOA and USART1 clocks */
  RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA | RCC_APB2Periph_USART1, ENABLE);
}
void GPIO_Configuration(void)
{
  GPIO_InitTypeDef GPIO_InitStructure;
  GPIO_InitStructure.GPIO_Pin = GPIO_Pin_9;
  GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;
  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);
}
void NVIC_Configuration(void)
{
  NVIC_InitTypeDef NVIC_InitStructure;
#ifdef  VECT_TAB_RAM  
  NVIC_SetVectorTable(NVIC_VectTab_RAM, 0x0);
#else  /* VECT_TAB_FLASH  */
  NVIC_SetVectorTable(NVIC_VectTab_FLASH, 0x0);   
#endif
  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);
}
#ifdef  DEBUG
void assert_failed(u8* file, u32 line)
{
  while (1)
  {
  }
}
#endif

中斷程序:
#include "stm32f10x_it.h"
#define TxBufferSize   (countof(TxBuffer) - 1)
#define RxBufferSize   0x51
#define countof(a)   (sizeof(a) / sizeof(*(a)))

u8 TxBuffer[] = "\n\r Stm32.USART->Computer \n\n\r";
u8 RxBuffer[RxBufferSize];
u8 NbrOfDataToTransfer = TxBufferSize;
u8 NbrOfDataToRead = RxBufferSize;
u8 TxCounter = 0;
u16 RxCounter = 0;

void USART1_IRQHandler(void)
{
  /*
if(USART_GetITStatus(USART1, USART_IT_RXNE) != RESET)
  {
   
    RxBuffer[RxCounter++] = (USART_ReceiveData(USART1) & 0xFF);         
   
    USART_ClearITPendingBit(USART1, USART_IT_RXNE);
    if(RxCounter == NbrOfDataToRead)
    {
      
      USART_ITConfig(USART1, USART_IT_RXNE, DISABLE);
    }
  }
  if(USART_GetITStatus(USART1, USART_IT_TXE) != RESET)
  {   
   
    USART_SendData(USART1, TxBuffer[TxCounter++]);                    
   
    USART_ClearITPendingBit(USART1, USART_IT_TXE);
    if(TxCounter == NbrOfDataToTransfer)
    {
      
      USART_ITConfig(USART1, USART_IT_TXE, DISABLE);
    }   
  }
*/
  
  
   if(USART_GetITStatus(USART1, USART_IT_RXNE) != RESET)
    {
   
    RxBuffer[RxCounter++] = (USART_ReceiveData(USART1) & 0xFF);   
    USART_SendData(USART1, RxBuffer[RxCounter-1]);
    USART_ClearITPendingBit(USART1, USART_IT_RXNE);
    if(RxCounter == NbrOfDataToRead)
      {
      USART_ITConfig(USART1, USART_IT_RXNE, DISABLE);
      }
    }
  if(USART_GetITStatus(USART1, USART_IT_TXE) != RESET)
   {
    USART_SendData(USART1, TxBuffer[TxCounter++]);   
    USART_ClearITPendingBit(USART1, USART_IT_TXE);
    if(TxCounter == NbrOfDataToTransfer)
    {
      USART_ITConfig(USART1, USART_IT_TXE, DISABLE);
    }   
   }
}



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

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 亚洲国产视频一区二区 | 一区二区三区欧美在线观看 | 中文字幕日韩欧美一区二区三区 | 精品国产免费一区二区三区演员表 | 91精品国产91久久综合桃花 | 精品久久久久久久久久久久久久 | 日韩欧美中文 | 99久热| 国产区久久 | 天天操天天射天天 | 91麻豆精品国产91久久久资源速度 | 亚洲欧美日本在线 | 欧美精品一区二区三区四区五区 | 欧美精品福利视频 | 黄色av免费网站 | 日本黄色免费大片 | 欧美精品一二三区 | 中文字幕第49页 | 亚洲精品二区 | 中文字幕一区二区三区日韩精品 | 久久久久久久电影 | 99精品国自产在线观看 | 99亚洲精品| 老牛影视av一区二区在线观看 | 精品一区二区三 | 久草网址 | 欧美一区二区三区在线免费观看 | 亚洲电影第三页 | 日韩av三区| 一区免费| 亚洲夜射| 久久人体视频 | 99久久久久| 国产精品久久久久久久久久了 | 亚洲精品久久久久avwww潮水 | 祝你幸福电影在线观看 | 午夜久久久久久久久久一区二区 | 成人免费在线 | 国产麻豆乱码精品一区二区三区 | 一区二区三区在线看 | 一区二区三区欧美在线 |