色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

CKS32F4xx系列產品串口介紹及配置方法

中科芯MCU ? 來源:中科芯MCU ? 2023-04-03 11:15 ? 次閱讀

串口通訊 (Serial Communication) 是一種設備間非常常用的串行通訊方式,因為它簡單便捷,大部分電子設備都支持該通訊方式。串口在CKS32上應用最多的莫過于“打印”程序信息,一般在硬件設計時都會預留一個串口連接電腦,用于在調試程序時可以把一些調試信息“打印”在電腦端的串口調試助手工具上,從而了解程序運行是否正確、指出程序運行出錯位置等等。

CKS32F4xx系列產品串口介紹

CKS32F4xx系列最多可提供6路串口,其中四個USART和兩個UART。USART和UART在引腳上的區別是:UART只有RX和TX引腳,而USART除了這兩個引腳之外,還有流控引腳RTS和CTS,以及時鐘引腳SCLK。CKS32F4xx系列產品的USART1和USART6時鐘來源于APB2總線時鐘,其最大頻率為84MHz,因此這兩個串口的通信速度最高可達10.5Mbit/s。而其它四個的時鐘來源于APB1總線時鐘,其最大頻率為42MHz,因此這四個串口的通信速度最高可達5.25Mbit/s。因為USART有SCLK引腳,因此CKS32F4xx系列產品的USART具有同步通信功能,而UART只有異步通信功能。同時USART還支持ISO7816的智能卡接口。但是當USART和UART都用在異步通信的時候,兩者是沒有什么區別的。CKS32F4xx系列的6個串口都支持DMA傳輸。

CKS32F4xx系列產品的串口在發送數據時,當發送使能位TE置1之后,發送器開始會先發送一個空閑幀(一個數據幀長度的高電平),然后就可以往USART_DR寄存器寫入要發送的數據。在寫入最后一個數據后,需要等USART狀態寄存器(USART_SR)的TC位為1,表示數據傳輸完成,如果USART_CR1寄存器的TCIE位置1,將產生中斷。串口發送的一個字符幀由三個部分組成:起始位+數據幀+停止位。起始位是一個位周期的低電平;數據幀就是我們要發送的8位或9位數據,數據是從最低位開始傳輸的;停止位是一定時間周期的高電平。停止位時間長短是可以通過USART控制寄存器2(USART_CR2)的STOP[1:0]位控制,可選0.5個、1個、1.5個和2個停止位。默認使用1個停止位。2個停止位適用于正常USART模式、單線模式和調制解調器模式。0.5個和1.5個停止位用于智能卡模式。

CKS32F4xx系列產品的串口在接收數據時,需要先將USART_CR1寄存器的RE 位置1,使能USART接收,使得接收器在RX線開始搜索起始位。在確定到起始位后就根據RX線電平狀態把數據存放在接收移位寄存器內。接收完成后就把接收移位寄存器數據移到RDR內,并把USART_SR寄存器的RXNE位置1,同時如果 USART_CR2寄存器的RXNEIE置1的話可以產生中斷。

CKS32F4xx系列產品控制器的USART支持奇偶校驗。當使用校驗位時,串口傳輸的長度將是8位的數據幀加上1位的校驗位總共9位,奇偶校驗由硬件自動完成。啟動了奇偶校驗控制之后,在發送數據幀時會自動添加校驗位,接收數據時自動驗證校驗位。接收數據時如果出現奇偶校驗位驗證失敗,則可以產生奇偶校驗中斷。使能了奇偶校驗控制后,每個字符幀的格式將變成:起始位+數據幀 +校驗位+停止位。

USART有多個中斷請求事件,具體如下表所示:在串口的中斷服務函數里,通過對這些中斷事件標志的檢測,就可以判斷出是何種事件發生,然后再做出相應的處理。

daa7d526-d085-11ed-bfe3-dac502259ad0.jpg

CKS32F4xx系列產品串口的配置

接下來我們講解如何利用CKS32F4xx系列固件庫來完成對串口的配置使用。首先標準庫函數定義了一個串口初始化結構體USART_InitTypeDef,結構體成員用于設置串口的工作參數,并由外設初始化配置函數USART_Init()調用,從而完成對串口相應寄存器的配置,進一步達到完成對串口配置的目的。

typedef struct 
{ 
uint32_t USART_BaudRate;   // 波特率 
uint16_t USART_WordLength; // 字長 
uint16_t USART_StopBits;    // 停止位 
uint16_t USART_Parity;      // 校驗位 
uint16_t USART_Mode;      // USART 模式 
uint16_t USART_HardwareFlowControl; // 硬件流控制 
} USART_InitTypeDef; 

結構體中各個成員變量的介紹及初始化時可被賦的值如下:

1) USART_BaudRate:波特率設置。一般設置為 2400、9600、19200、115200。標準庫函數會根據設定值計算得到USARTDIV值,并設置USART_BRR寄存器值。

2) USART_WordLength:數據幀字長,可選8位或9位。它設定USART_CR1 寄存器的M位的值。如果沒有使能奇偶校驗控制,一般使用8位數據幀長;如果使能了奇偶校驗則一般設置為9位數據幀長。

#define USART_WordLength_8b                  ((uint16_t)0x0000)
#define USART_WordLength_9b                  ((uint16_t)0x1000)

3) USART_StopBits: 停止位設置,可選0.5個、1個、1.5個和 2個停止位,它設定USART_CR2寄存器的STOP[1:0]位的值,一般我們選擇1個停止位。

#define USART_StopBits_1                     ((uint16_t)0x0000)
#define USART_StopBits_0_5                   ((uint16_t)0x1000)
#define USART_StopBits_2                     ((uint16_t)0x2000)
#define USART_StopBits_1_5                   ((uint16_t)0x3000)

4) USART_Parity: 奇偶校驗控制選擇,可選USART_Parity_No(無校驗)、USART_Parity_Even(偶校驗)以及USART_Parity_Odd(奇校驗),它設定 USART_CR1寄存器的PCE位和PS位的值。

#define USART_Parity_No                      ((uint16_t)0x0000)
#define USART_Parity_Even                    ((uint16_t)0x0400)
#define USART_Parity_Odd                     ((uint16_t)0x0600) 

5) USART_Mode: USART模式選擇,有USART_Mode_Rx和USART_Mode_Tx,允許使用邏輯或運算選擇兩個,它設定USART_CR1寄存器的RE位和TE位。

#define USART_Mode_Rx                        ((uint16_t)0x0004)
#define USART_Mode_Tx                        ((uint16_t)0x0008)

6) USART_HardwareFlowControl: 硬件流控制選擇,只有在硬件流控制模式才有效,可選使能RTS、使能CTS、同時使能RTS和CTS、不使能硬件流。

#define USART_HardwareFlowControl_None       ((uint16_t)0x0000)
#define USART_HardwareFlowControl_RTS        ((uint16_t)0x0100)
#define USART_HardwareFlowControl_CTS        ((uint16_t)0x0200)
#define USART_HardwareFlowControl_RTS_CTS    ((uint16_t)0x0300)

當使用同步模式時需要配置SCLK引腳輸出脈沖的屬性,標準庫使用一個時鐘初始化結構體USART_ClockInitTypeDef來設置,不使用時不需要設置。

typedef struct 
{ 
uint16_t USART_Clock; // 時鐘使能控制 
uint16_t USART_CPOL; // 時鐘極性 
uint16_t USART_CPHA; // 時鐘相位 
uint16_t USART_LastBit; // 最尾位時鐘脈沖 
} USART_ClockInitTypeDef; 

結構體中各個成員變量的介紹及初始化時可被賦的值如下:

1) USART_Clock: 同步模式下SCLK引腳上時鐘輸出使能控制,可選禁止時鐘輸出(USART_Clock_Disable)或開啟時鐘輸出(USART_Clock_Enable);如果使用同步模式發送,一般都需要開啟時鐘。它設定USART_CR2寄存器的CLKEN位的值。

#define USART_Clock_Disable                  ((uint16_t)0x0000)
#define USART_Clock_Enable                   ((uint16_t)0x0800)

2) USART_CPOL: 同步模式下SCLK引腳上輸出時鐘極性設置,可設置在空閑時SCLK引腳為低電平(USART_CPOL_Low)或高電平(USART_CPOL_High)。它設定USART_CR2寄存器的CPOL位的值。

#define USART_CPOL_Low                       ((uint16_t)0x0000)
#define USART_CPOL_High                      ((uint16_t)0x0400)

3) USART_CPHA: 同步模式下SCLK引腳上輸出時鐘相位設置,可設置在時鐘第一個變化沿捕獲數據(USART_CPHA_1Edge)或在時鐘第二個變化沿捕獲數據。它設定USART_CR2寄存器的CPHA位的值。USART_CPHA與USART_CPOL配合使用可以獲得多種模式時鐘關系。

#define USART_CPHA_1Edge                     ((uint16_t)0x0000)
#define USART_CPHA_2Edge                     ((uint16_t)0x0200)

4) USART_LastBit: 選擇在發送最后一個數據位的時候時鐘脈沖是否在 SCLK引腳輸出,可以是不輸出脈沖(USART_LastBit_Disable)、輸出脈沖 (USART_LastBit_Enable)。它設定USART_CR2寄存器的LBCL位的值。

#define USART_LastBit_Disable                ((uint16_t)0x0000)
#define USART_LastBit_Enable                 ((uint16_t)0x0100)

要完成串口正常的收發數據,還需要標準庫中的這些函數配合使用。

(1) void USART_SendData(USART_TypeDef* USARTx, uint16_t Data)函數:

void USART_SendData(USART_TypeDef* USARTx, uint16_t Data)
{
  assert_param(IS_USART_ALL_PERIPH(USARTx));
  assert_param(IS_USART_DATA(Data)); 
  USARTx->DR = (Data & (uint16_t)0x01FF);
}

該函數的功能是向串口寄存器USART_DR寫入一個數據,有兩個入口參數,第一個是選擇是哪個串口,其可選擇的值為USART1、USART2、USART3、USART6、UART4、UART5。第二個參數是待發送的數據,其值只要滿足如下條件即可:

#define IS_USART_DATA(DATA) ((DATA) <= 0x1FF)

(2) uint16_t USART_ReceiveData(USART_TypeDef* USARTx)函數:

uint16_t USART_ReceiveData(USART_TypeDef* USARTx)
{
  assert_param(IS_USART_ALL_PERIPH(USARTx));
  return (uint16_t)(USARTx->DR & (uint16_t)0x01FF);
}

該函數的功能是從USART_DR寄存器讀取串口接收到的數據,只有一個入口參數,即選擇是哪個串口。

(3) void USART_Cmd(USART_TypeDef* USARTx, FunctionalState NewState)函數:

void USART_Cmd(USART_TypeDef* USARTx, FunctionalState NewState)
{
  assert_param(IS_USART_ALL_PERIPH(USARTx));
  assert_param(IS_FUNCTIONAL_STATE(NewState));
  if (NewState != DISABLE)
  {
    USARTx->CR1 |= USART_CR1_UE;
  }
  else
  {
  USARTx->CR1 &= (uint16_t)~((uint16_t)USART_CR1_UE);
  }
}

要完成串口正常的收發數據,還需要標準庫中的這些函數配合使用。

該函數的功能是使能串口。有兩個入口參數,第一個是選擇是哪個串口,其可選擇的值為USART1、USART2、USART3、USART6、UART4、UART5。第二個參數是使能或者不使能,其值為DISABLE或者ENABLE。

(4) void USART3_IRQHandler(void) 串口中斷服務程序函數:

當發生中斷的時候,程序就會執行中斷服務函數。然后我們在中斷服務函數中編寫我們相應的邏輯代碼即可。

(5) FlagStatus USART_GetFlagStatus(USART_TypeDef* USARTx, uint16_t USART_FLAG)函數:

該函數的功能是讀取串口的狀態,第一個入口參數和上面的一樣。這里重點講解第二個入口參數,它是標示我們要查看串口的哪種狀態,可選的值及其代表的意義如表格所示:

db0e26aa-d085-11ed-bfe3-dac502259ad0.jpg

(6) ITStatus USART_GetITStatus(USART_TypeDef* USARTx, uint16_t USART_IT)函數:

當我們使能了某個中斷的時候,當該中斷發生了,就會設置狀態寄存器中的某個標志位。經常我們在中斷處理函數中,要判斷該中斷是哪種中斷,這時候就會使用該函數。第二個入口參數可選的值及其代表的意義如表格所示:

db3a3114-d085-11ed-bfe3-dac502259ad0.jpg

串口接發通信實驗

接下來我們根據上面講解的串口通信的知識,實際編寫一個軟件程序實現串口的接發通信。代碼實現的現象是在開發板一上電時會通過print函數發送一串字符串“start”給電腦,然后開發板進入中斷接收等待狀態。如果電腦有發送數據過來,開發板就會產生中斷, 我們在中斷服務函數里接收數據,并將接收到數據標志位置1,在主函數里對標志位經過判斷之后再把數據返回發送給電腦。

1.編程要點

1) 使能RX和TX引腳GPIO時鐘和USART3時鐘;

2) 初始化GPIO,并將GPIO復用到USART3上;

3) 配置USART3參數;

4) 配置中斷控制器并使能USART3接收中斷;

5) 使能USART3;

6) 在USART3接收中斷服務函數里接收數據并將接收到數據的標志位置1。

2.代碼分析

代碼清單1:USART3初始化配置

其初始化串口的過程和我們前面講解的編程要點中的過程是一致的。因為我們使用到了串口的中斷接收,因此需要開啟串口3的NVIC中斷并對其進行配置。

void uart_init(u32 bound)
{
    GPIO_InitTypeDef GPIO_InitStructure;
  USART_InitTypeDef USART_InitStructure;
  NVIC_InitTypeDef NVIC_InitStructure;
//使能RX和TX引腳GPIO時鐘
  RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOB,ENABLE);
//使能USART3時鐘
  RCC_APB1PeriphClockCmd(RCC_APB1Periph_USART3,ENABLE);
  //初始化GPIO,并將GPIO復用到USART3上
  GPIO_PinAFConfig(GPIOB,GPIO_PinSource10,GPIO_AF_USART3); 
  GPIO_PinAFConfig(GPIOB,GPIO_PinSource11,GPIO_AF_USART3); 
  GPIO_InitStructure.GPIO_Pin = GPIO_Pin_10 | GPIO_Pin_11; 
  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF; 
  GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
  GPIO_InitStructure.GPIO_OType = GPIO_OType_PP; 
  GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_UP; 
  GPIO_Init(GPIOB,&GPIO_InitStructure); 
   //配置USART3參數
  USART_InitStructure.USART_BaudRate = bound;//波特率設置
  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(USART3, &USART_InitStructure); 
//使能USART3
    USART_Cmd(USART3, ENABLE); 
//配置中斷控制器并使能USART3接收中斷;  
#if EN_USART3_RX  
  USART_ITConfig(USART3, USART_IT_RXNE, ENABLE); 
  NVIC_InitStructure.NVIC_IRQChannel = USART3_IRQn; 
  NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority=3;
  NVIC_InitStructure.NVIC_IRQChannelSubPriority =3;  
  NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;    
  NVIC_Init(&NVIC_InitStructure);  
#endif  
}

代碼清單2:USART3中斷服務函數

當USART3有接收到數據時就會執行USART3_IRQHandler函數。然使用if 語句來判斷是否是真的產生USART3數據接收這個中斷事件,如果是真的就使用 USART數據讀取函數USART_ReceiveData讀取數據到指定存儲區Res,并將自己定義的一個標志位Rxflag置1。

void USART3_IRQHandler(void)                
{
  if(USART_GetITStatus(USART3, USART_IT_RXNE) != RESET) 
  {
    Res =USART_ReceiveData(USART3);//(USART1->DR);  
    Rxflag=1;         
  } 
}

代碼清單3:字符函數

//發送一個字符函數
static void Usart_SendByte( USART_TypeDef * pUSARTx, uint8_t ch )
{
  USART_SendData(pUSARTx,ch);
  while (USART_GetFlagStatus(pUSARTx, USART_FLAG_TXE) == RESET);  
}
//發送指定長度字符的函數
void Usart_SendStr_length( USART_TypeDef * pUSARTx, uint8_t *str,uint32_t strlen )
{
  unsigned int k=0;
    do 
    {
        Usart_SendByte( pUSARTx, *(str + k) );
        k++;
    } while(k < strlen);
}

Usart_SendByte函數用來在指定USART發送一個ASCLL碼值字符,它有兩個形參,第一個為USART,第二個為待發送的字符。它是通過調用庫函數 USART_SendData來實現的,并且增加了等待發送完成功能。

Usart_SendString函數用來發送一個字符串,它實際是調用 Usart_SendByte函數發送每個字符,直到遇到空字符才停止發送。最后使用循環檢測發送完成的事件標志來實現保證數據發送完成后才退出函數。

代碼清單4:printf函數支持

#if 1
#pragma import(__use_no_semihosting)                             
struct __FILE 
{ 
  int handle; 
}; 
FILE __stdout;         
void _sys_exit(int x) 
{ 
  x = x; 
} 
int fputc(int ch, FILE *f)
{   
  while((USART3->SR&0X40)==0);//循環發送,直到發送完畢   
  USART3->DR = (u8) ch;      
  return ch;
}
#endif

這段代碼是引入printf函數支持所必須的,加入這段代碼加入之后便可以通過printf函數向串口發送我們需要的內容,方便開發過程中查看代碼執行情況以及一些變量值。如果我們使用不同的串口,對這段代碼的修改一般也只是用來改變 printf 函數針對的串口號,比如將上述代碼中的USART3改成USART1即可。

代碼清單5:主函數

u8 Res;
u8 Rxflag;
u8 USART_RX_BUF[USART_REC_LEN];  
u8 usRxCount=0; 
int main(void)
{ 
  NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);
  delay_init(168);     
  uart_init(115200);   
  printf("start
");
  while(1)
  {
    if(Rxflag)
    {
      if (usRxCount < sizeof(USART_RX_BUF))
      {
        USART_RX_BUF[usRxCount++] = Res;
      }
      else
      {
        usRxCount = 0;
      }
      /* 遇到換行字符,就把數據發送到串口助手*/
    if (Res == 0x0A)  /* 換行字符 */
    {    
     Usart_SendStr_length(USART3,USART_RX_BUF, usRxCount );
        usRxCount = 0;
      }
      Rxflag=0;
    }
  }
}

首先我們調用NVIC_PriorityGroupConfig函數完成對NVIC的初始化,然后調用uart_init函數完成對串口的初始化,這里將串口波特率設置成可115200(位/秒)。接著利用printf函數發送一次“start”到串口調試助手。然后對Rxflag的值進行判斷,當接收到了數據,即Rxflag的值為1時,對接收的數據長度進行判斷,USART_REC_LEN是我們定義的接收最大字節數,這個值可以根據自己的需要進行修改。當接收的數據在最大字節數范圍之內時,把接收到的數據賦值到數組USART_RX_BUF里,同時當接收到的數據為0x0A,即換行字符時,利用Usart_SendStr_length函數將接收到的數據發送出去。因此在利用串口調試助手向MCU發送數據時,要勾選“加回車換行符”。

在本程序中我們設置串口進入中斷的方式為數據寄存器非空即進一次中斷,因此每個字節的接收都會進一次中斷,這會導致CPU的效率大大降低,因此在下一節我們將會講解利用DMA的方式對串口的數據進行發送和接收。

審核編輯:湯梓紅

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 寄存器
    +關注

    關注

    31

    文章

    5336

    瀏覽量

    120230
  • 串口
    +關注

    關注

    14

    文章

    1551

    瀏覽量

    76422
  • 引腳
    +關注

    關注

    16

    文章

    1193

    瀏覽量

    50411
  • uart
    +關注

    關注

    22

    文章

    1235

    瀏覽量

    101354
  • 串口通信
    +關注

    關注

    34

    文章

    1624

    瀏覽量

    55508

原文標題:MCU微課堂 | CKS32F4xx系列產品串口通信

文章出處:【微信號:中科芯MCU,微信公眾號:中科芯MCU】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    MCU微課堂|CKS32F4xx系列產品時鐘配置

    ,并且高時鐘頻率將導致功耗增加、抗電磁干擾能力變弱,因此,CKS32F4xx系列產品內部具備多個時鐘源。本文將對CKS32F4xx系列產品時鐘組成進行分析,并講解該系統單片機的時鐘的
    發表于 12-12 10:17 ?830次閱讀

    CKS32F4xx系列DSP功能介紹

    CKS32F4xx系列使用高性能的32位內核,支持浮點運算單元(FPU),同時還支持DSP指令以及存儲保護(MPU)用來加強應用的安全性。
    的頭像 發表于 03-04 13:43 ?1539次閱讀
    <b class='flag-5'>CKS32F4xx</b><b class='flag-5'>系列</b>DSP功能<b class='flag-5'>介紹</b>

    CKS32F4xx系列mcu的GPIO口配置方法

    GPIO(General-purpose input/output)是通用輸入輸出端口的簡稱,CKS32F4xx系列產品通過GPIO引腳與外部設備連接起來,從而實現與外部通訊、控制以及數據采集的功能。
    發表于 12-26 11:32 ?1320次閱讀

    CKS32F4xx系列產品NVIC中斷優先級管理單元講解

    本課將為大家講解CKS32F4xx系列產品的中斷優先級管理單元NVIC。CM4內核共支持256個中斷,其中包含了16個內核中斷和240個外部中斷,具有256級可編程中斷設置。但CKS32F4x
    的頭像 發表于 02-06 14:52 ?1169次閱讀

    CKS32F4xx系列產品串口DMA傳輸

    在上一講,我們講過CKS32F4xx系列的6個串口都支持DMA傳輸。因此本節我們對CKS32F4xx系列的DMA進行
    的頭像 發表于 04-10 11:18 ?1031次閱讀

    CKS32F4xx系列產品的定時器使用-基本特征和定時操作

    這一課我們將介紹CKS32F4XX系列產品的定時器使用,CKS32F4XX的定時器功能十分強大,包含2個高級控制定時器,8個普通定時器,2個基礎定時器,以及兩個看門狗定時器和一個系統定
    的頭像 發表于 05-19 09:18 ?892次閱讀
    <b class='flag-5'>CKS32F4xx</b><b class='flag-5'>系列產品</b>的定時器使用-基本特征和定時操作

    CKS32F4xx系列RNG功能設置

    ? MCU 微課堂 CKS32F4xx 系 列RNG功能 隨機數發生器簡介 ? ? CKS32F4xx系列自帶了硬件隨機數發生器(RNG),RNG處理器是一個以連續模擬噪聲為基礎的隨機數發生器,在
    的頭像 發表于 09-08 10:01 ?603次閱讀
    <b class='flag-5'>CKS32F4xx</b><b class='flag-5'>系列</b>RNG功能設置

    CKS32F4xx系列DAC功能

    CKS32F4xx系列DAC功能
    的頭像 發表于 11-06 16:56 ?846次閱讀
    <b class='flag-5'>CKS32F4xx</b><b class='flag-5'>系列</b>DAC功能

    CKS32F4xx系列ADC多通道DMA電壓采集

    CKS32F4xx系列ADC多通道DMA電壓采集
    的頭像 發表于 11-06 16:53 ?1096次閱讀

    CKS32F4xx系列產品Timer的基本使用方法-定時器脈沖計數

    CKS32F4xx系列產品Timer的基本使用方法-定時器脈沖計數
    的頭像 發表于 11-09 17:38 ?1065次閱讀
    <b class='flag-5'>CKS32F4xx</b><b class='flag-5'>系列產品</b>Timer的基本使用<b class='flag-5'>方法</b>-定時器脈沖計數

    CKS32F4xx系列產品Timer的基本使用方法-比較輸出

    CKS32F4xx系列產品Timer的基本使用方法-比較輸出
    的頭像 發表于 11-09 17:39 ?848次閱讀
    <b class='flag-5'>CKS32F4xx</b><b class='flag-5'>系列產品</b>Timer的基本使用<b class='flag-5'>方法</b>-比較輸出

    CKS32F4xx系列產品Timer的基本使用方法-定時操作

    CKS32F4xx系列產品Timer的基本使用方法-定時操作
    的頭像 發表于 11-09 17:41 ?616次閱讀
    <b class='flag-5'>CKS32F4xx</b><b class='flag-5'>系列產品</b>Timer的基本使用<b class='flag-5'>方法</b>-定時操作

    MCU微課堂 | CKS32F4xx系列產品SPI通信

    MCU微課堂 | CKS32F4xx系列產品SPI通信
    的頭像 發表于 10-24 17:12 ?699次閱讀
    MCU微課堂 | <b class='flag-5'>CKS32F4xx</b><b class='flag-5'>系列產品</b>SPI通信

    MCU微課堂 | CKS32F4xx系列產品GPIO口配置

    MCU微課堂 | CKS32F4xx系列產品GPIO口配置
    的頭像 發表于 10-24 15:14 ?776次閱讀
    MCU微課堂 | <b class='flag-5'>CKS32F4xx</b><b class='flag-5'>系列產品</b>GPIO口<b class='flag-5'>配置</b>

    CKS32F4xx系列FSMC功能簡介

    本課講為大家講解CKS32F4xx系列產品的FSMC應用實例,FSMC全稱是Flexible Static Memory Controller,讀作靈活的靜態存儲控制器,顧名思義,MCU可以通過FSMC擴展靜態內存
    的頭像 發表于 04-14 15:06 ?932次閱讀
    <b class='flag-5'>CKS32F4xx</b><b class='flag-5'>系列</b>FSMC功能簡介
    主站蜘蛛池模板: 国产精品自在自线亚洲| 一道本av免费不卡播放| 欧美性暴力变态xxxx| 久久水蜜桃亚洲AV无码精品偷窥| 国产在线高清视频无码不卡| 性xxx免费视频| 色偷偷av男人的天堂| 日本亚洲中文字幕无码区| 欧美巨大xxxx做受高清| 嫩草国产福利视频一区二区| 久久婷婷色一区二区三区| 久久国产露脸老熟女熟69| 日本人的xxxxxxxxx69| 欧美黑人巨大xxxxx| 欧美成a人片免费看久久| 暖暖视频大全免费观看| 欧美人妇无码精品久久| 欧美亚洲国产免费高清视频| 日本内射精品一区二区视频| 三级网站视频在线观看| 特级做A爰片毛片免费69| 午夜伦yy44880影院| 亚洲国产在线精品国自产拍五月| 亚洲成人黄色片| 亚洲日韩乱码人人爽人人澡人| 一本到2v不卡区| 尤蜜网站在线进入免费| 1000部做羞羞事禁片免费视频网站| 5566av资源| videos gratis欧美另类| 大岛优香久久中文字幕| 国产成人无码视频一区二区三区 | 亚洲一区免费在线观看| 一个人HD在线观看免费高清视频 | 中文字幕乱偷无码AV蜜桃| 总裁呻吟双腿大开男男H| 999视频精品全部免费观看| 被高跟鞋调教丨vk| 国产成人免费在线观看| 国产亚洲精品99一区二区| 久久精品成人免费看|