久久国产成人av_抖音国产毛片_a片网站免费观看_A片无码播放手机在线观看,色五月在线观看,亚洲精品m在线观看,女人自慰的免费网址,悠悠在线观看精品视频,一级日本片免费的,亚洲精品久,国产精品成人久久久久久久

分享

嵌入式單片機(jī)學(xué)習(xí)之串口接收數(shù)據(jù)實(shí)例

 人生如戲ds3xoc 2019-11-14

  //通過(guò)判斷接收連續(xù)2個(gè)字符之間的時(shí)間差不大于10ms來(lái)決定是不是一次連續(xù)的數(shù)據(jù).

  //如果2個(gè)字符接收間隔超過(guò)10ms,則認(rèn)為不是1次連續(xù)數(shù)據(jù).也就是超過(guò)10ms沒(méi)有接收到

  //任何數(shù)據(jù),則表示此次接收完畢.

  //接收到的數(shù)據(jù)狀態(tài)

  //[15]:0,沒(méi)有接收到數(shù)據(jù);1,接收到了一批數(shù)據(jù).

  //[14:0]:接收到的數(shù)據(jù)長(zhǎng)度

  vu16 USART3_RX_STA=0;

  一,。uart3.c中的函數(shù)

  1. 初始化串口3

  //初始化IO 串口3

  //pclk1:PCLK1時(shí)鐘頻率(Mhz)

  //bound:波特率

  void usart3_init(u32 bound)

  {

  NVIC_InitTypeDef NVIC_InitStructure;

  GPIO_InitTypeDef GPIO_InitStructure;

  USART_InitTypeDef USART_InitStructure;

  RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB, ENABLE); // GPIOB時(shí)鐘

  RCC_APB1PeriphClockCmd(RCC_APB1Periph_USART3,ENABLE); //串口3時(shí)鐘使能

  USART_DeInit(USART3); //復(fù)位串口3

  //USART3_TX PB10

  GPIO_InitStructure.GPIO_Pin = GPIO_Pin_10; //PB10

  GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;

  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP; //復(fù)用推挽輸出

  GPIO_Init(GPIOB, &GPIO_InitStructure); //初始化PB10

  //USART3_RX PB11

  GPIO_InitStructure.GPIO_Pin = GPIO_Pin_11;

  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;//浮空輸入

  GPIO_Init(GPIOB, &GPIO_InitStructure); //初始化PB11

  USART_InitStructure.USART_BaudRate = bound;//波特率一般設(shè)置為9600;

  USART_InitStructure.USART_WordLength = USART_WordLength_8b;//字長(zhǎng)為8位數(shù)據(jù)格式

  USART_InitStructure.USART_StopBits = USART_StopBits_1;//一個(gè)停止位

  USART_InitStructure.USART_Parity = USART_Parity_No;//無(wú)奇偶校驗(yàn)位

  USART_InitStructure.USART_HardwareFlowControl = USART_HardwareFlowControl_None;//無(wú)硬件 數(shù)據(jù)流控制

  USART_InitStructure.USART_Mode = USART_Mode_Rx | USART_Mode_Tx; //收發(fā)模式

  USART_Init(USART3, &USART_InitStructure); //初始化串口3

  USART_Cmd(USART3, ENABLE); //使能串口

  //使能接收中斷

  USART_ITConfig(USART3, USART_IT_RXNE, ENABLE);//開(kāi)啟中斷

  //設(shè)置中斷優(yōu)先級(jí)

  NVIC_InitStructure.NVIC_IRQChannel = USART3_IRQn;

  NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority=2 ;//搶占優(yōu)先級(jí)3

  NVIC_InitStructure.NVIC_IRQChannelSubPriority = 3; //子優(yōu)先級(jí)3

  NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE; //IRQ通道使能

  NVIC_Init(&NVIC_InitStructure); //根據(jù)指定的參數(shù)初始化VIC寄存器

  ////////////////////////////////////////////////////////////////////////////////////////////////////////

  //定時(shí)器7定為10ms中斷,檢測(cè)如果10ms內(nèi)接收到的數(shù)據(jù)為同一個(gè)數(shù)據(jù)包中的數(shù)據(jù),,如果超過(guò)10ms

  就算這次接收完成,。

  TIM7_Int_Init(1000-1,7200-1); //10ms中斷

  USART3_RX_STA=0; //清零

  TIM_Cmd(TIM7,DISABLE); //關(guān)閉定時(shí)器7

  }

  2.串口3中斷函數(shù)

  void USART3_IRQHandler(void)

  {

  u8 res;

  if(USART_GetITStatus(USART3, USART_IT_RXNE) != RESET)//接收到數(shù)據(jù)

  {

  res =USART_ReceiveData(USART3);

  if((USART3_RX_STA&(1<<15))==0)//接收完的一批數(shù)據(jù),還沒(méi)有被處理,則不再接收其他數(shù)據(jù)

  {

  if(USART3_RX_STA //還可以接收數(shù)據(jù)

  {

  TIM_SetCounter(TIM7,0); //計(jì)數(shù)器清空,,定時(shí)器7開(kāi)始下一次定時(shí)

  if(USART3_RX_STA==0) //使能定時(shí)器7的中斷

  {

  TIM_Cmd(TIM7,ENABLE);//使能定時(shí)器7

  }

  USART3_RX_BUF[USART3_RX_STA++]=res; //記錄接收到的值

  }else

  {

  USART3_RX_STA|=1<<15; //強(qiáng)制標(biāo)記接收完成

  }

  }

  }

  }

  3. 串口2的printf函數(shù)

  //串口3,printf 函數(shù)

  //確保一次發(fā)送數(shù)據(jù)不超過(guò)USART3_MAX_SEND_LEN字節(jié)

  void u3_printf(char* fmt,...)

  {

  u16 i,j;

  va_list ap;

  va_start(ap,fmt);

  vsprintf((char*)USART3_TX_BUF,fmt,ap);

  va_end(ap);

  i=strlen((const char*)USART3_TX_BUF); //此次發(fā)送數(shù)據(jù)的長(zhǎng)度

  for(j=0;j //循環(huán)發(fā)送數(shù)據(jù)

  {

  while(USART_GetFlagStatus(USART3,USART_FLAG_TC)==RESET); //循環(huán)發(fā)送,直到發(fā)送完畢

  USART_SendData(USART3,USART3_TX_BUF[j]);

  }

  }

  4.串口3printf函數(shù)的引用

  u3_printf("%s",p); //發(fā)送該數(shù)據(jù)到WIFI模塊

  u3_printf("%s\r\n",cmd); //發(fā)送命令

  二。timer.c中定時(shí)器7的設(shè)置

  1. 初始化

  //通用定時(shí)器7中斷初始化

  //這里時(shí)鐘選擇為APB1的2倍,,而APB1為42M

  //arr:自動(dòng)重裝值,。

  //psc:時(shí)鐘預(yù)分頻數(shù)

  //定時(shí)器溢出時(shí)間計(jì)算方法:Tout=((arr+1)*(psc+1))/Ft us.

  //Ft=定時(shí)器工作頻率,單位:Mhz

  //通用定時(shí)器中斷初始化

  //這里始終選擇為APB1的2倍,而APB1為36M

  //arr:自動(dòng)重裝值,。

  //psc:時(shí)鐘預(yù)分頻數(shù)

  void TIM7_Int_Init(u16 arr,u16 psc)

  {

  NVIC_InitTypeDef NVIC_InitStructure;

  TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure;

  RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM7, ENABLE);//TIM7時(shí)鐘使能

  //定時(shí)器TIM7初始化

  TIM_TimeBaseStructure.TIM_Period = arr; //設(shè)置在下一個(gè)更新事件裝入活動(dòng)的自動(dòng)重裝載寄存器周期的 值

  TIM_TimeBaseStructure.TIM_Prescaler =psc; //設(shè)置用來(lái)作為TIMx時(shí)鐘頻率除數(shù)的預(yù)分頻值

  TIM_TimeBaseStructure.TIM_ClockDivision = TIM_CKD_DIV1; //設(shè)置時(shí)鐘分割:TDTS = Tck_tim

  TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up; //TIM向上計(jì)數(shù)模式

  TIM_TimeBaseInit(TIM7, &TIM_TimeBaseStructure); //根據(jù)指定的參數(shù)初始化TIMx的時(shí)間基數(shù)單位

  TIM_ITConfig(TIM7,TIM_IT_Update,ENABLE ); //使能指定的TIM7中斷,允許更新中斷

  TIM_Cmd(TIM7,ENABLE);//開(kāi)啟定時(shí)器7

  NVIC_InitStructure.NVIC_IRQChannel = TIM7_IRQn;

  NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority=0 ;//搶占優(yōu)先級(jí)0

  NVIC_InitStructure.NVIC_IRQChannelSubPriority = 2; //子優(yōu)先級(jí)2

  NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE; //IRQ通道使能

  NVIC_Init(&NVIC_InitStructure); //根據(jù)指定的參數(shù)初始化VIC寄存器

  }

  二,。定時(shí)器7的中斷函數(shù)

  //定時(shí)器7中斷服務(wù)程序

  void TIM7_IRQHandler(void)

  {

  if (TIM_GetITStatus(TIM7, TIM_IT_Update) != RESET)//是更新中斷

  {

  USART3_RX_STA|=1<<15; //標(biāo)記接收完成

  TIM_ClearITPendingBit(TIM7, TIM_IT_Update ); //清除TIM7更新中斷標(biāo)志

  TIM_Cmd(TIM7, DISABLE); //關(guān)閉TIM7

  }

  }

分享些資料便于后期的學(xué)習(xí)參考

(stm32串口應(yīng)用)
http://www./live/1392_1164.html?s=45051
PWM脈寬調(diào)制技術(shù)
http://www./live/4034_2146.html?s=45051
基于STM32講解串口操作
http://www./live/1758_490.html?s=45051
通過(guò)Z-stack協(xié)議棧實(shí)現(xiàn)串口透?jìng)?br>http://www./live/1758_330.html?s=45051

    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,,不代表本站觀點(diǎn),。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購(gòu)買等信息,,謹(jǐn)防詐騙,。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào),。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶 評(píng)論公約

    類似文章 更多