日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

proteus里面没有stm32怎么办_嵌入式单片机之stm32串口你懂了多少!!

發布時間:2025/3/8 编程问答 18 豆豆
生活随笔 收集整理的這篇文章主要介紹了 proteus里面没有stm32怎么办_嵌入式单片机之stm32串口你懂了多少!! 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

  stm32作為現在嵌入式物聯網單片機行業中經常要用多的技術,相信大家都有所接觸,今天這篇就給大家詳細的分析下有關于stm32的出口,還不是很清楚的朋友要注意看看了哦,在最后還會為大家分享有些關于stm32的視頻資料便于學習參考。

點擊鏈接加入群聊【嵌入式單片機Linux C交流群②】:可以一起詳聊

正在跳轉?jq.qq.com

  什么是串口

  UART : Universal Asynchronous Receiver/Transmitter 通用異步收發器

  USART : Universal Synchronous Asynchronous Receiver/Transmitter 通用同步/異步收發器

  一種是常用也是最簡單的串行數據傳輸協議。數據線只需要兩根就可以實現全雙工。

  Tx: 發送數據線

  Rx: 接收數據線

  A B

  TX -----------> Rx

  Rx <------------Tx

  全雙工: 兩個設備可以同時發送和接收

  串行數據: 發送只一根線,一次只能發送一bit. 一bit接著一bit發送和接收。

  模塊通信: 上位機 下位機

  通信一般需要兩個設備,我們把這兩個設備,人為叫做上位機, 下位機。

  上位機: 把處理性能強的機子,上位機。數據大部分處理都在上位機完成。

  下位機: 把數據采集的終端,處理性能單一的機子,下位機。

  串口只有一根發送數據線,假如 A要發送一個字符數據  10101010 給B

  A -------- ---------

  -------- ------- ...

  高電平周期是多長?即使是不發送數據Tx線上也有一個電平狀態,接收方

  它怎么知道你是在發送呢?....

  UART數據如何傳輸?

  UART protocol 串口協議。

  串口發送和接收數據是以幀為單位. Frame

  1幀(Frame)= 1 start bit(起始位) + 5-9bits數據位 + 0/1bit 校驗位  + stop bits(0.5, 1,1,5,2)

  起始位: 一個周期的低電平

  數據位: 5-9bits數據位,具體是多少bits,需要雙方協商。并且傳送是先傳送LSB(最低位) … MSB

  校驗位:

  0 bit :沒有校驗位

  1 bit :校驗位. “賴子” X

  D0 D1 D2 … Dn X

  奇校驗:要保證傳輸的1為奇數

  D0 D1 D2 … Dn X 要保證這一串數據中1的個數為奇數

  1 0 1 0 1 0 1 0 X(1)

  1 0 1 0 1 0 1 1 X(0)

  偶校驗:要保存傳輸的1為偶數

  停止位: 高電平

  0.5 個停止位?!“雮€周期的高電平

  1 個停止位

  1.5 個停止位

  2 個停止位

  Baudrate(波特率): 傳輸速率。

  決定 時間周期。

  115200 bps: bits per second

  物理層標準  the physical layer standards

  TTL level UART : TTL電平串口

  RS-232:

  RS-422:

  RS-485:

  TTL level UART:

  邏輯低電平(0) 0V

  邏輯高電平(1) 5V/3.3V

  RS-232: 適合較長距離傳輸

  邏輯低電平(0) +3v~+15V

  邏輯高電平(1) -3v~-15v

  TTL UART RS-232 RS-422 RS-485

  電平 1 3.3V/5V 1 -5V ~ -15V +/- 2v +/- 1.5v

  0 0V 0 5V ~ +15V

  信號 單端信號   單端信號  差分信號   差分信號

  傳輸長度 < 2m <15m <1200m <1200m

  不同標準的串口,引腳也不一樣。TX/Rx是一定存在的。

  TTL

  RX

  TX

  GND

  VCC

  STM32F4xx 串口控制器

  TX

  RX

  硬件流控:

  RTS: Request To Send 請求發送信號

  終端告訴對方可以向我傳輸數據啦。

  CTS: Clear To Send 清除發送信號

  對方告知終端,我要向你發送數據啦

  RTS -------> CTS(對方)

  CTS <------- RTS(對方)

  標志位:

  TXE: Transmit data Register Empty

  發送數據寄存器為空。

  不代表上一次數據已經發送完成啦,因為數據有可能還在 shifter里面

  但是此時您可以向TDR寫數據啦。

  TC : Transmit Complete

  發送完成。

  發送移位寄存器中的數據已經發送到Tx引腳上面去了。

  RXNE: Read Data register Not Empty

  接收數據寄存器不為空。意思是你可以讀數據啦。

  STM32F4xx串口代碼流程

  (1) GPIO口配置

  串口的TX/RX 引腳是由GPIO口來復用的。

  a. 使能GPIO分組的時鐘

  RCC_AHB1PeriphClockCmd

  b. 配置GPIO口的功能 GPIO_Init

  c. 選擇具體的復用功能

  GPIO_PinAFConfig

  (2) usart配置

  a. 使能usart時鐘

  b. USART_Init

  USART_Init(USART_TypeDef * USARTx, USART_InitTypeDef * USART_InitStruct);

  typedef struct

  {

  uint32_t USART_BaudRate; // 波特率

  uint16_t USART_WordLength; //傳輸字長 ,如下兩個任選其一:

  USART_WordLength_8b

  USART_WordLength_9b

  在STM32中:傳輸字長=數據位數+檢驗位數

  uint16_t USART_StopBits; //停止位數,如下 :

  USART_StopBits_1 1bit停止位

  USART_StopBits_1_5 1.5bit停止位

  USART_StopBits_2 2 bits停止位

  USART_StopBits_0_5 0.5bit停止位

  uint16_t USART_Parity; //校驗方式,如下:

  USART_Parity_No 無校驗

  USART_Parity_Odd 奇校驗

  USART_Parity_Even 偶校驗

  uint16_t USART_Mode; //串口模式, 如下:可以組合

  USART_Mode_Tx 發送模式

  USART_Mode_Rx 接收模式

  USART_Mode_Tx | USART_Mode_Rx 發送和接收模式

  uint16_t USART_HardwareFlowControl; //硬件流控

  USART_HardwareFlowControl_None 無硬件流控

  USART_HardwareFlowControl_RTS RTS 請求發送。你可以接收對方的數據。

  USART_HardwareFlowControl_CTS CTS 清除發送,你可以發數據給對方。

  USART_HardwareFlowControl_RTS_CTS RTS_CTS 發送和接收都用流控

  } USART_InitTypeDef;

  (3) 中斷的配置

  USART_ITConfig <- 配置串品的中斷

  在STM32中一個USART只對應一個中斷通道,但是引起串口中斷的

  事件有很多,比如:

  TXE -> 發送寄存器為空,可以引起串口中斷

  TC -> 發送完成,可以引起串口中斷

  RXNE -> 接收寄存器不為空,可以引起串口中斷

  ……

  只不過,這些事件需要"中斷控制位使能"

  USART_ITConfig(USART1, USART_IT_RXNE,ENABLE);

  USART_ITConfig就是用來把一個串口的XX事件,配置成是否引起串口中斷的

  在串口中斷函數里面,就需要判斷是哪個串口事件,引起了中斷!!!

  NVIC_Init()

  (4) 使能串口

  USART_Cmd

  接收(中斷函數)

  USART1_IRQHanlder()

  {

  if (USART_GetITStatus(USART1, USART_IT_RXNE) != RESET)

  {

  //有數據可讀啦

  data = USART_ReceiveData(USART1); //讀取接收到的數據

  }

  //清除USART1的中斷標志

  USART_GetITStatus

  }

  USART_GetITStatus用來獲取串口的xx事件標志位

  發送數據

  USART_SendData(USART1, 0x55);

  while (USART_GetFlagStatus(USRAT1, USART_FLAG_TXE) == RESET); //等待發送結束

  stm32視頻學習資料

(stm32 USART串口應用)

PWM脈寬調制技術

基于STM32講解串口操作

通過Z-stack協議棧實現串口透傳

(stm32直流電機驅動)

總結

以上是生活随笔為你收集整理的proteus里面没有stm32怎么办_嵌入式单片机之stm32串口你懂了多少!!的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。