日韩一区二区三区精品,欧美疯狂xxxxbbbb牲交,热99re久久免费视精品频,人妻互换 综合,欧美激情肉欲高潮视频

1、串口的配置

1)首先打開你的工程,在STM32Cube里面找到USART1,此時串口默認(rèn)是Disanle的,我們要使能它,選擇Asynchronous.


2)然后點(diǎn)擊Configuration,就會有一個串口的配置圖框,點(diǎn)進(jìn)去配置串口,如果需要用到中斷,選擇NVIC進(jìn)去進(jìn)行相關(guān)配置。


串口配置:

串口中斷使能:

--------------------------------------------------------------------------------------------------------------------------------------------------------------------


2、查看串口內(nèi)的函數(shù)API

Keil工程內(nèi)選擇{ }Functions,然后選擇你需要查看的目標(biāo)源文件,展開既是該源碼內(nèi)的函數(shù)


串口的發(fā)送接收函數(shù):


HAL_UART_Transmit();//串口輪詢模式發(fā)送,使用超時管理機(jī)制

 

HAL_UART_Receive();//串口輪詢模式接收,使用超時管理機(jī)制

 

HAL_UART_Transmit_IT();//串口中斷模式發(fā)送

 

HAL_UART_Receive_IT();//串口中斷模式接收

 

HAL_UART_Transmit_DMA();//串口DMA模式發(fā)送

 

HAL_UART_Receive_DMA();//串口DMA模式接收

串口相關(guān)的中斷函數(shù):


HAL_UART_TxHalfCpltCallback()://一半數(shù)據(jù)(half transfer)發(fā)送完成后,通過中斷處理函數(shù)調(diào)用。

 

HAL_UART_TxCpltCallback()://發(fā)送完成后,通過中斷處理函數(shù)調(diào)用。

 

HAL_UART_RxHalfCpltCallback()://一半數(shù)據(jù)(half transfer)接收完成后,通過中斷處理函數(shù)調(diào)用。

 

HAL_UART_RxCpltCallback():///接收完成后,通過中斷處理函數(shù)調(diào)用。

 

HAL_UART_ErrorCallback():/傳輸過程中出現(xiàn)錯誤時,通過中斷處理函數(shù)調(diào)用。

串口有三種通信模式:


第一種是輪詢的模式。CPU不斷查詢IO設(shè)備,如設(shè)備有請求則加以處理。例如CPU不斷查詢串口是否傳輸完成,如傳輸超過則返回超時錯誤。輪詢方式會占用CPU處理時間,效率較低。


第二種就是中斷控制方式。當(dāng)I/O操作完成時,輸入輸出設(shè)備控制器通過中斷請求線向處理器發(fā)出中斷信號,處理器收到中斷信號之后,轉(zhuǎn)到中斷處理程序,對數(shù)據(jù)傳送工作進(jìn)行相應(yīng)的處理。


第三種就是直接內(nèi)存存取技術(shù)(DMA)方式。所謂直接傳送,即在內(nèi)存與IO設(shè)備間傳送一個數(shù)據(jù)塊的過程中,不需要CPU的任何中間干涉,只需要CPU在過程開始時向設(shè)備發(fā)出“傳送塊數(shù)據(jù)”的命令,然后通過中斷來得知過程是否結(jié)束和下次操作是否準(zhǔn)備就緒。


--------------------------------------------------------------------------------------------------------------------------------------------------------------------


3、在main.c文件添加printf支持

/* USER CODE BEGIN 1 */

 

#ifdef __GNUC__

 

       /* With GCC/RAISONANCE, small printf (option LD Linker->Libraries->Small printf

     set to 'Yes') calls __io_putchar() */

 

#define PUTCHAR_PROTOTYPE int __io_putchar(int ch)

 

#else

  #define PUTCHAR_PROTOTYPE int fputc(int ch, FILE *f)

 

#endif /* __GNUC__ */

 

/**

  * @brief  Retargets the C library printf function to the USART.

  * @param  None

  * @retval None

  */

PUTCHAR_PROTOTYPE

{

 /* Place your implementation of fputc here */

  /* e.g. write a character to the EVAL_COM1 and Loop until the end of transmission */

  HAL_UART_Transmit(&huart1, (uint8_t *)&ch, 1, 0xFFFF);

  return ch;

}

 

/* USER CODE END 1 */


--------------------------------------------------------------------------------------------------------------------------------------------------------------------


4、單獨(dú)串口中斷的使用

1)在main函數(shù)前面添加兩個數(shù)組變量


uint8_t aTxStartMessage[] = "rn UART-communication based on IT rn";

 

uint8_t aRxBuffer[20];

/* USER CODE END PV */

 


2)在main函數(shù)中添加語句接收數(shù)據(jù)10個字符,保存在數(shù)組aRxBuffer中。


HAL_UART_Receive_IT(&huart1, (uint8_t *)aRxBuffer, 10);//串口接收中斷使能,如果要循環(huán)使用就放到while(1)里面


3)在main.c文件添加中斷接收完成回調(diào)函數(shù)。中斷回調(diào)函數(shù)中將接收到的數(shù)據(jù)又通過串口發(fā)送回去。


/* USER CODE BEGIN 4 */

/**

  * @brief Rx Transfer completed callbacks

  * @param huart: uart handle

  * @retval None

  */

void HAL_UART_RxCpltCallback(UART_HandleTypeDef *huart)

{

  /* Prevent unused argument(s) compilation warning */

  UNUSED(huart); 

 

  /* NOTE : This function should not be modified, when the callback is needed,

            the HAL_UART_RxCpltCallback can be implemented in the user file

   */

    HAL_UART_Transmit(&huart1, (uint8_t *)aRxBuffer, 10,0xFFFF);//發(fā)送10個數(shù)據(jù)給串口1

    HAL_UART_Receive_IT(&huart1,aRxBuffer,10);      // 重新使能串口1接收中斷  

}

 

/* USER CODE END 4 */

----------------------------------------------------------------------------------------------------------------

5、多個串口同時使用

1)定義串口1和串口3的接收數(shù)據(jù)變量



2)中斷回調(diào)函數(shù)


void HAL_UART_RxCpltCallback(UART_HandleTypeDef *huart)

{

 /* Prevent unused argument(s) compilation warning */

  UNUSED(huart);

 

  /* NOTE : This function should not be modified, when the callback is needed,

            the HAL_UART_RxCpltCallback can be implemented in the user file

   */

        if(huart->Instance ==  USART1)//串口1做調(diào)試

        {

           // HAL_UART_Transmit(&huart1, (uint8_t *)aRxBuffer1, 10,0xFFFF);

 

             RECV_FLAG1 = 1;

 

            HAL_UART_Receive_IT(&huart1,aRxBuffer1,10);  // 再次串口接收中斷使能 

        }

 

        else if(huart->Instance ==  USART2)//串口2接藍(lán)牙

        {

           HAL_UART_Transmit(&huart1, (uint8_t *)aRxBuffer2, 3,0xFFFF);

 

             RECV_FLAG2 = 1;

 

            HAL_UART_Receive_IT(&huart2,aRxBuffer2,3);  //再次串口接收中斷使能  

        }   

}


3)主函數(shù)編寫


Int mai(void)

{

     While(1)

    {

        if(RECV_FLAG2 == 1)

       {

          RECV_FLAG2= 0;

 

        Car_contrl(aRxBuffer2[0]);  //控制協(xié)議cmd[3]:cmd[0]=控制碼  cmd[1]=0xD   cmd[2]= 0xA   

       }

 

    HAL_UART_Receive_IT(&huart1, (uint8_t *)aRxBuffer1, 10); //串口1接收中斷使能

 

    HAL_UART_Receive_IT(&huart2, (uint8_t *)aRxBuffer2, 3); //串口3接收中斷使能,所以大小為3:0D 0A 01

 

    }

 

}


-----------------------------------------------------------------------END--------------------------------------------------------------------------

--------------------- 

關(guān)鍵字:STM32Cube  串口配置  使用 引用地址:STM32Cube的串口配置與使用

上一篇:UCOSIII在STM32F4xx上的移植
下一篇:stm32cube學(xué)習(xí)筆記(2)

推薦閱讀

我擔(dān)心人會變成機(jī)器,而機(jī)器又會具有人的頭腦。 ——卡雷爾·恰佩克 如今,“機(jī)器人”(Robot)一詞對我們來講已不陌生,并正在逐漸成為使用高頻詞。掃地機(jī)器人、寵物玩偶機(jī)器人、仿生機(jī)器人……還有軍事領(lǐng)域的探測機(jī)器人、掃雷機(jī)器人,甚至“殺人機(jī)器人”……無論是工廠流水線上的機(jī)械臂、還是戰(zhàn)場上的,動畫片里的“哆啦A夢”機(jī)器貓、還是電影里的機(jī)械...
眼下,電動車在我們身邊的存在感越來越強(qiáng),雖然我們還不滿足于它的充電速度,續(xù)航里程(低溫環(huán)境下)等體驗(yàn)短板,但作為一個理念更加先進(jìn)、前景不可估量的產(chǎn)品,我們其實(shí)也認(rèn)可了它在特定場景下使用的合理性。那么,作為在從燃油車時代就一直陪伴我們的“整車信息娛樂系統(tǒng)”,要如何在電動車上“落地生根”并“發(fā)揚(yáng)光大”呢?首先,我們要看到傳統(tǒng)燃油車和...
眾所周知,MSP430以其超低功耗而著稱。但是很多用戶反應(yīng),在實(shí)際應(yīng)用中,測量MSP430的功耗時,測量結(jié)果和MSP430數(shù)據(jù)手冊相差甚遠(yuǎn)。其實(shí)這里主要涉及到兩方面的內(nèi)容:1. 如何使用MSP430合理的設(shè)計硬件和軟件,使整個應(yīng)用最大限度的達(dá)到低功耗?2. 如何測量MSP430的功耗?就如何測量MSP430功耗,我來分享一下我個人的經(jīng)驗(yàn)。一、未使用的GPIO的處理為了使MS...
韓國首爾2021年4月23日 /美通社/ -- 斗山機(jī)器人(Doosan Robotics Inc.)宣布發(fā)布與最新ROS 2 Foxy Fitzroy兼容的斗山ROS 2包。斗山機(jī)器人于2021年初發(fā)布了ROS 2程序包,成為業(yè)界首家操作由最新版本ROS 2驅(qū)動的協(xié)作機(jī)器人的公司。斗山機(jī)器人斗山機(jī)器人宣布Doosan ROS2 程序包亮相,該程序包支持最新版ROS 2 Foxy Fitzroy 。斗山機(jī)器...

史海拾趣

問答坊 | AI 解惑

CMM與CAM一體化技術(shù)在汽車車身設(shè)計中的應(yīng)用

汽車產(chǎn)業(yè)是我國重點(diǎn)支柱產(chǎn)業(yè),但目前國內(nèi)各汽車生產(chǎn)廠的車身造型設(shè)計基本還停留在傳統(tǒng)手工制作上,不僅制作精度低,耗費(fèi)大量的人力和工時,也制約了汽車工業(yè)自主開發(fā)的進(jìn)程,所以在汽車設(shè)計模型制作過程中將三維數(shù)學(xué)主模型直接編程加工并通過數(shù)字照 ...…

查看全部問答∨

“安防靠狗”,農(nóng)村市場大有可為!

“安防靠狗”的說法深有體會,家里那邊村子里,基本人人都有條狗,動不動就是藏獒、動不動就是黑背,搞得鄰里關(guān)系整得日益疏遠(yuǎn),誰也不想給狗當(dāng)午餐不是? 但不可否認(rèn)的是,農(nóng)村安防確實(shí)是一個非常大的市場,但是如果沒有國家實(shí)質(zhì)性投入的話,這 ...…

查看全部問答∨

幫朋友發(fā)個QQ群,招人,嘿嘿

這個群建立以來一直只有幾個人,現(xiàn)在我來幫忙招人進(jìn)去。 29521470…

查看全部問答∨

error C2061: syntax error : identifier 'SHFILEINFOW'

C:\\Program Files\\Windows CE Tools\\wce600\\ProgWinCE_SDK\\Include\\Armv4i\\shellapi.h(321) : error C2061: syntax error : identifier \'SHFILEINFOW\' 1>D:\\Program Files\\Microsoft Visual Studio 8\\VC\\atlmfc\\include\\afxv_w32.h ...…

查看全部問答∨

求助RTX環(huán)境下串口通信的問題

小弟最近開始學(xué)習(xí)Ardence RTX,有很多不懂得地方,下面是一個基于serialAPI.h開發(fā)驅(qū)動的RTX通信串口測試程序。主線程是讀數(shù)據(jù),次線程是寫數(shù)據(jù)。經(jīng)過兩次測試: 1.在單臺計算機(jī)上用串口線連接COM1和COM2,并在RTX環(huán)境下將其打開,將下面次線程中寫 ...…

查看全部問答∨

請問各位大蝦,有熟悉lwip的嗎? 問個在inet.c文件中有個inet_chksum_pseudo()的函數(shù)相關(guān)問題。

函數(shù)原型如下: /* inet_chksum_pseudo: * * Calculates the pseudo Internet checksum used by TCP and UDP for a pbuf chain. */ u16_t inet_chksum_pseudo(struct pbuf *p,        struct ip_addr *src, struct i ...…

查看全部問答∨

msp430 PWM輸出問題

比如占空比為20%,pwm輸出管腳不能使用定時器,所以我用中斷定時時間來實(shí)現(xiàn)輸出,定時時間到置管腳高電平或者低電平,現(xiàn)在我想問的是:我的pwm的周期怎么定呢 …

查看全部問答∨

SJF燒寫的問題,請前輩賜教

我的筆記本上本身帶有并口,并且安裝了打印程序,可以執(zhí)行打印任務(wù)。為了燒寫WINCE,我安裝了GIVEIO,安裝沒有抱錯,在設(shè)備管理器里 可以看到:端口(COM和LPT)->ECP打印機(jī)(LPT1),giveio(COM6). 應(yīng)該說,不會出現(xiàn)問題,可是當(dāng)我燒寫的時候,出現(xiàn)錯 ...…

查看全部問答∨

在Microsoft Visual Studio 2005下編譯的程序怎么不能在WINCE4.2下運(yùn)行?

在WINCE5下都可以正常運(yùn)行,到WINCE4.2下就提示不是有效的WINDOW CE應(yīng)用程序了,有什么辦法可以解決???…

查看全部問答∨

ST中TB中斷只能進(jìn)入一次

@interrupt void TB_INIT(void){    PADR=0;    return;}void main(void){    PADDR=0x0F;    PAOR=0x0F;    LTCSR=0x ...…

查看全部問答∨
小廣播
設(shè)計資源 培訓(xùn) 開發(fā)板 精華推薦

最新單片機(jī)文章

 
EEWorld訂閱號

 
EEWorld服務(wù)號

 
汽車開發(fā)圈

 
機(jī)器人開發(fā)圈

電子工程世界版權(quán)所有 京ICP證060456號 京ICP備10001474號-1 電信業(yè)務(wù)審批[2006]字第258號函 京公網(wǎng)安備 11010802033920號 Copyright ? 2005-2025 EEWORLD.com.cn, Inc. All rights reserved