女人自慰AV免费观看内涵网,日韩国产剧情在线观看网址,神马电影网特片网,最新一级电影欧美,在线观看亚洲欧美日韩,黄色视频在线播放免费观看,ABO涨奶期羡澄,第一导航fulione,美女主播操b

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

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

3天內不再提示

STM32的串口中斷配置

電子工程師 ? 2018-04-06 07:24 ? 次閱讀

STM32的串口中斷配置,也是很簡單的.

首先是配置UART的GPIO口

首先是配置UART的GPIO口

/**********************************************

* Name : UART1_GPIO_Configuration

* Deion : Configures the uart1 GPIO ports.

* Input : None

* Output : None

* Return : None

**********************************************************/

void UART1_GPIO_Configuration(void)

{

GPIO_InitTypeDef GPIO_InitStructure;

// Configure USART1_Tx as alternate push-pull

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

// Configure USART1_Rx as input floating

GPIO_InitStructure.GPIO_Pin = GPIO_Pin_10;

GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;

GPIO_Init(GPIOA, &GPIO_InitStructure);

}

然后是配置串口參數

/*******************************************************

* Name : UART1_Configuration

* Deion : Configures the uart1

* Input : None

* Output : None

* Return : None

*********************************************/

void USART_Configuration(void)

{

USART_InitTypeDef USART_InitStructure;

USART_ClockInitTypeDef USART_ClockInitStructure;

Uart1_GPIO_Configuration();

USART_ClockInitStructure.USART_Clock = USART_Clock_Disable;

USART_ClockInitStructure.USART_CPOL = USART_CPOL_Low;

USART_ClockInitStructure.USART_CPHA = USART_CPHA_2Edge;

USART_ClockInitStructure.USART_LastBit = USART_LastBit_Disable;

/* Configure the USART1 synchronous paramters */

USART_ClockInit(USART1, &USART_ClockInitStructure);

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;

/* Configure USART1 basic and asynchronous paramters */

USART_Init(USART1, &USART_InitStructure);

/* Enable USART1 Receive interrupts */

USART_ITConfig(USART1, USART_IT_RXNE, ENABLE);

/* Enable USART1 */

USART_Cmd(USART1, ENABLE);

}

然后是在中斷設置,需要修改stm32f10x_it.c 中的串口中斷函數 并且需要修改void NVIC_Configuration(void)函數

修改NVIC_Configuration函數

/***********************************************************

* Name : NVIC_Configuration

* Deion : Configures NVIC and Vector Table base location.

* Input : None

* Output : None

* Return : None

***************************************************/

void NVIC_Configuration(void)

{

NVIC_InitTypeDef NVIC_InitStructure;

#ifdef VECT_TAB_RAM

/* Set the Vector Table base location at 0x20000000 */

NVIC_SetVectorTable(NVIC_VectTab_RAM, 0x0);

#else /* VECT_TAB_FLASH */

/* Set the Vector Table base location at 0x08000000 */

NVIC_SetVectorTable(NVIC_VectTab_FLASH, 0x0);

#endif

/* Configure the NVIC Preemption Priority Bits */

NVIC_PriorityGroupConfig(NVIC_PriorityGroup_0);

/* Enable the USART1 Interrupt */

NVIC_InitStructure.NVIC_IRQChannel = USART1_IRQChannel;

NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0;

NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;

NVIC_Init(&NVIC_InitStructure);

}

//串口中斷

void USART1_IRQHandler(void)

{

//處理接收到的數據

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

{

/* Clear the USART1 Receive interrupt */

USART_ClearITPendingBit(USART1, USART_IT_RXNE);

}

//發送中斷

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

{

USART_SendData(USART1, Send_Data[Send_Length++]);

if (Send_Length==SEND_LENGTH)

{

//發送字節結束

USART_ClearITPendingBit(USART1,USART_IT_TXE);

USART_ITConfig(USART1, USART_IT_TXE, DISABLE);

USART_ITConfig(USART1, USART_IT_TC, ENABLE);

}

}

//發送完成

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

{

USART_ClearITPendingBit(USART1,USART_IT_TC);

USART_ITConfig(USART1, USART_IT_TC, DISABLE);

}

}

在需要發送的程序里Send_Data[SEND_LENGTH]和發送長度設置好,

void Send_to_PC(void)

{

//設置好Send_Data[SEND_LENGTH]數組

//打開發送中斷

USART_ITConfig(USART1, USART_IT_TXE, ENABLE);

}

至此 串口就可以工作起來了!~

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

    關注

    2289

    文章

    11011

    瀏覽量

    362300
收藏 人收藏

    評論

    相關推薦
    熱點推薦

    STM32串口下載軟件(FLYMCU)

    STM32串口下載軟件(FLYMCU),經典版本,親試可用。
    發表于 04-09 15:59 ?1次下載

    STM32F427串口接收和發送中斷同時使能,為什么會出現接收中斷丟數的情況?

    STM32F427芯片,針對UART7開啟串口接收緩存區非空中斷RXNE和串口傳輸完成中斷TC. 1.單測試收發都沒有任何問題。 2.將
    發表于 03-11 07:05

    STM32F103在使用HAL庫1.8.5版本使用串口中斷發送數據的時候,出現huart2->TxXferCount為0了,為什么?

    STM32F103在使用HAL庫1.8.5版本使用串口中斷發送數據的時候,會出現huart2->TxXferCount為0了,但是并沒有清除掉TXEIE中斷也沒有使能TCIE中斷
    發表于 03-07 07:12

    串口中斷是內部中斷還是外部中斷,串口中斷是怎么觸發的

    串口中斷通常被視為外部中斷。雖然串口控制器(如USART、UART等)可能集成在微控制器或處理器的內部,但從中斷的角度來看,串口中斷是由處理
    的頭像 發表于 01-29 15:03 ?1394次閱讀

    串口中斷需要清除標志位嗎,串口中斷標志位會自動清除嗎

    在電子通信領域,串口中斷作為一種重要的通信機制,廣泛應用于各種嵌入式系統和計算機設備中。串口中斷標志位的管理,尤其是是否需要手動清除以及是否會自動清除,是理解和實現串口通信的關鍵環節。
    的頭像 發表于 01-29 14:59 ?1339次閱讀

    串口中斷有什么用,串口中斷的觸發條件是什么

    在現代電子通信系統中,串口中斷作為一種高效的數據處理機制,扮演著至關重要的角色。它允許處理器在數據到達或發送完成時立即響應,從而提高系統的響應速度和效率。
    的頭像 發表于 01-29 14:56 ?1411次閱讀

    STM32串口接受中斷使用C++STL中的queue導致所有中斷失效

    ,FreeRTOS的heap設置為8k 有兩個中斷,1s觸發的定時器中斷串口接收中斷 遇到問題 串口發送是沒有問題的,如果不是使用STL的
    發表于 01-24 10:21

    串口通信的開發環境配置

    串口通信的開發環境配置涉及多個方面,包括選擇編程語言、安裝必要的庫或驅動程序、配置串口參數等。以下是一個基于Python的串口通信開發環境
    的頭像 發表于 11-22 09:21 ?769次閱讀

    stm32 GPIO中斷配置教程

    在嵌入式開發中,STM32微控制器因其高性能和豐富的外設而廣受歡迎。GPIO(通用輸入/輸出)中斷STM32微控制器中常用的功能之一,它允許開發者在特定引腳上檢測到外部信號變化時快速響應。 1.
    的頭像 發表于 11-19 15:53 ?2993次閱讀

    stm32怎樣觸發軟件中斷

    了解STM32中斷系統 STM32微控制器具有豐富的中斷系統,包括NVIC(嵌套向量中斷控制器)和SYSTICK定時器。NVIC可以處理多達
    的頭像 發表于 09-02 09:32 ?1604次閱讀

    stm32串口燒錄怎么設置

    準備工作 確保您擁有STM32開發板和相應的硬件設備,如USB轉串口模塊。 安裝STM32CubeMX和STM32CubeProgrammer軟件,這些是ST官方提供的工具,用于
    的頭像 發表于 08-22 09:33 ?2871次閱讀

    使用cube生成的文件,編寫串口中斷就下載就Internal command error的原因?

    使用自己設計的最小系統板,用cube配置好文件,編寫配置led燈的代碼下載沒有問題,編寫串口1的中斷后燒錄就會Internal command error,雖然解除類似單片機休眠之后,
    發表于 07-24 08:20

    STM32G030F6串口空閑中斷配置卡死怎么解決?

    本人在用STM32G030F6 串口空閑中斷+DMA接受的時候,CubeMX配置完成,在mian函數while(1)前初始化,使能空閑中斷_
    發表于 07-22 06:51

    NON_OS sdkv2.0.0的mqtt demo里串口中斷沒反應是怎么回事?

    NON_OS的mqtt后我看了串口中斷的回調函數是接收到啥就發送啥,但是實際我發送啥反應都沒有,好像8266的串口中斷沒有執行
    發表于 07-12 08:21

    STM32G030F6用串口中斷函數接收數據,發送數據就死機怎么解決?

    平臺介紹: 芯片是使用的STM32G030F6,系統是rt-thread nano-v3.1.5, 使用rtthread studio + cubemx生成工程項目 問題描述:想使用串口中斷方式去
    發表于 07-11 06:44