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

標題: USART接收發送數據(可以中斷可以查詢發送接收數據) [打印本頁]

作者: huge    時間: 2015-2-19 00:14
標題: USART接收發送數據(可以中斷可以查詢發送接收數據)

#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);
    }   
   }
}








歡迎光臨 (http://www.zg4o1577.cn/bbs/) Powered by Discuz! X3.1
主站蜘蛛池模板: 伊人中文字幕 | 伊人看片 | 日日艹夜夜艹 | www.788.com色淫免费 | 久久久www成人免费无遮挡大片 | 欧美在线a| 日韩国产中文字幕 | 一区二区久久精品 | 免费观看黄色片视频 | 国产一区二区自拍 | 久久精品在线免费视频 | 日韩精品一区在线 | 一级黄在线观看 | 免费一区二区三区在线视频 | 国产精品激情小视频 | 秋霞影院一区二区 | 亚洲精品无人区 | 一级片成人| 国产在线精品一区 | 国产精品成av人在线视午夜片 | 四虎在线播放 | 国产色| 手机av网 | 九九热精品视频 | 99久久婷婷国产综合精品电影 | 高清黄色网址 | 国产精品久久久久久中文字 | 国产精品自产拍在线观看蜜 | 小h片免费观看久久久久 | 国产精品久久久久久久三级 | 国产精品一区二区三区四区五区 | 国产精品亚洲成在人线 | 色频 | 久久久久久久电影 | 午夜精品久久久久久久久久久久久 | 亚洲在线| 精品久久香蕉国产线看观看亚洲 | 中日韩av| 午夜欧美日韩 | 91大神新作在线观看 | 欧美日韩在线一区二区三区 |