找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 1304|回復(fù): 0
收起左側(cè)

串口屏與stm32的通信(中斷模式),求助

[復(fù)制鏈接]
ID:595380 發(fā)表于 2020-11-24 00:09 | 顯示全部樓層 |閱讀模式
本帖最后由 51_users 于 2020-11-24 00:35 編輯

串口屏向單片機(jī)發(fā)送字符1,單片機(jī)接收到數(shù)據(jù)后PA9翻轉(zhuǎn)。接收緩存長度該設(shè)置為多少?如何判斷接受的字符是不是1呢?哪里需要改進(jìn)或不對的地方,請幫指出來,謝謝。

/ *用戶代碼開頭標(biāo)頭* /
/ **
  ******************************************** ******************************************
  * @file:main.c
  * @brief:Main程序主體
  **************************************************** ******************************
  * *注意
  *
  * <h2> <center>©版權(quán)所有(c)2020 STMicroelectronics。
  *保留所有權(quán)利。</ center> </ h2>
  *
  *該軟件組件由ST根據(jù)BSD 3-條款許可進(jìn)行許可,
  即“許可”;除非符合
  *許可證,否則您不得使用此文件。您可以在以下位置獲得許可副本:
  * opensource.org/licenses/BSD-3-Clause
  *
  ************************************* **********************************************
  * /
/ *用戶代碼結(jié)尾標(biāo)題* //
/包括---------------------------------------------- -------------------- * /
#include“ main.h”
#include“ usart.h”
#include“ gpio.h”

/ *私有包含--- -------------------------------------------------- ----- * /
/ *用戶代碼開始包括* /

/ *用戶代碼結(jié)束包括* /

/ *私有typedef ----------------------- ------------------------------------ * /
/ *用戶代碼開始PTD * /

/ *用戶代碼結(jié)束PTD * /

/ *私人定義---------------------------------------------- -------------- * /
/ *用戶代碼開始PD * /
/ *用戶代碼結(jié)束PD * /

/ *私有宏-------------- ----------------------------------------------- * /
/ *用戶代碼開始PM * /

/ *用戶代碼結(jié)束PM * /

/ *私有變量------------------------------- -------------------------- * /

/ *用戶代碼開始PV * /
uint8_t Rxbuf [8];
/ *用戶代碼結(jié)尾PV * /

/ *私有函數(shù)原型------------------------------------- ---------- * /
void SystemClock_Config(void);
/ *用戶代碼開始PFP * /

/ *用戶代碼結(jié)束PFP * /

/ *專用用戶代碼----------------------------- ---------------------------- * /
/ *用戶代碼開始0 * /

/ *用戶代碼結(jié)束0 * /

/ **
  * @brief應(yīng)用程序入口點。
  * @retval int
  * /
int main(void)
{
  / *用戶代碼開始1 * /

  / *用戶代碼結(jié)束1 * /

  / * MCU配置------------------ -------------------------------------- * /

  / *重置所有外設(shè),初始化閃存界面和Systick。* /
  HAL_Init();

  / *用戶代碼開始Init * /

  / *用戶代碼結(jié)束Init * /

  / *配置系統(tǒng)時鐘* /
  SystemClock_Config();

  / *用戶代碼開始SysInit * /

  / *用戶代碼結(jié)束SysInit * /

  / *初始化所有已配置的外圍設(shè)備* /
  MX_GPIO_Init();
  MX_USART2_UART_Init();
  / *用戶代碼開始2 * /
        HAL_UART_Receive_IT(&huart2,Rxbuf,sizeof(Rxbuf));
  / *用戶代碼結(jié)尾2 * /

  / *無限循環(huán)* /
  / *用戶代碼開始時* /
  而(1)
  {
               
    / *用戶代碼結(jié)束時* /

    / *用戶代碼開始3 * /
  }
  / *用戶代碼結(jié)束3 * /
}

/ **
  * @簡要系統(tǒng)時鐘配置
  * @retval無
  * /
void SystemClock_Config(void)
{
  RCC_OscInitTypeDef RCC_OscInitStruct = {0};
  RCC_ClkInitTypeDef RCC_ClkInitStruct = {0};

  / **配置主內(nèi)部穩(wěn)壓器輸出電壓
  * /
  __HAL_RCC_PWR_CLK_ENABLE();
  __HAL_PWR_VOLTAGESCALING_CONFIG(PWR_REGULATOR_VOLTAGE_SCALE1);
  / **根據(jù)
  RCC_OscInitTypeDef結(jié)構(gòu)中的指定參數(shù)*初始化RCC振蕩器。
  * /
  RCC_OscInitStruct.OscillatorType = RCC_OSCILLATORTYPE_HSE;
  RCC_OscInitStruct.HSEState = RCC_HSE_ON;
  RCC_OscInitStruct.PLL.PLLState = RCC_PLL_ON;
  RCC_OscInitStruct.PLL.PLLSource = RCC_PLLSOURCE_HSE;
  RCC_OscInitStruct.PLL.PLLM = 8;
  RCC_OscInitStruct.PLL.PLLN = 336;
  RCC_OscInitStruct.PLL.PLLP = RCC_PLLP_DIV2;
  RCC_OscInitStruct.PLL.PLLQ = 4;
  如果(HAL_RCC_OscConfig(&RCC_OscInitStruct)!= HAL_OK)
  {
    Error_Handler();
  }
  / **初始化CPU,AHB和APB總線時鐘
  * /
  RCC_ClkInitStruct.ClockType = RCC_CLOCKTYPE_HCLK | RCC_CLOCKTYPE_SYSCLK
                              | RCC_CLOCKTYPE_PCLK1 | RCC_CLOCKTYPE_PCLK2;
  RCC_ClkInitStruct.SYSCLKSource = RCC_SYSCLKSOURCE_PLLCLK;
  RCC_ClkInitStruct.AHBCLKDivider = RCC_SYSCLK_DIV1;
  RCC_ClkInitStruct.APB1CLKDivider = RCC_HCLK_DIV4;
  RCC_ClkInitStruct.APB2CLKDivider = RCC_HCLK_DIV2;

  如果(HAL_RCC_ClockConfig(&RCC_ClkInitStruct,F(xiàn)LASH_LATENCY_5)!= HAL_OK)
  {
    Error_Handler();
  }
}

/ *用戶代碼開始4 * /
  void HAL_UART_RxcpltCallback(UART_HandleTypeDef * UartHandle)
        {
                if(UartHandle-> Instance == USART2)
                {
                        HAL_UART_Receive_IT(&huart2,Rxbuf,sizeof(Rxbuf));
                        HAL_GPIO_TogglePin(GPIOA,GPIO_PIN_9);
                        HAL_Delay(500);
                }
        }
/ *用戶代碼  結(jié)尾4 * /

/ **
* @brief發(fā)生錯誤時執(zhí)行此功能。
  * @retval無
  * /
void Error_Handler(void)
{
  / *用戶代碼開始Error_Handler_Debug * /
  / *用戶可以添加自己的實現(xiàn)以報告HAL錯誤返回狀態(tài)* /

  / *用戶代碼結(jié)束Error_Handler_Debug * /
}

#ifdef USE_FULL_ASSERT
/ **
  * @brief報告
  發(fā)生assert_param錯誤的源文件的名稱和源行號*。
  * @param文件:指向源文件名的指針
  * @param行:assert_param錯誤行源編號
  * @retval無
  * /
void assert_failed(uint8_t * file,uint32_t行)
{
  / *用戶代碼開頭6 * /
  / *用戶可以添加他自己的實現(xiàn)以報告文件名和行號,
     tex:printf(“錯誤的參數(shù)值:%d \ r \ n行上的文件%s”,文件行)* /
  / *用戶代碼結(jié)尾6 * /
}
#endif / * USE_FULL_ASSERT * /

/ ************************(C)版權(quán)STMicroelectronics *****文件結(jié)尾**** /


回復(fù)

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

手機(jī)版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表