|
本帖最后由 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é)尾**** /
|
|