0
A
回答
1
在STM32CubeF4和STM32CubeF1包中肯定存在一些示例。
也可參見本實施例中,其中所述微控制器回聲回所接收的字節,以使用UART RX中斷髮件人:
#include "stm32f4xx.h"
UART_HandleTypeDef huart2;
/* Single byte to store input */
uint8_t byte;
void SystemClock_Config(void);
/* UART2 Interrupt Service Routine */
void USART2_IRQHandler(void)
{
HAL_UART_IRQHandler(&huart2);
}
/* This callback is called by the HAL_UART_IRQHandler when the given number of bytes are received */
void HAL_UART_RxCpltCallback(UART_HandleTypeDef *huart)
{
if (huart->Instance == USART2)
{
/* Transmit one byte with 100 ms timeout */
HAL_UART_Transmit(&huart2, &byte, 1, 100);
/* Receive one byte in interrupt mode */
HAL_UART_Receive_IT(&huart2, &byte, 1);
}
}
void uart_gpio_init()
{
GPIO_InitTypeDef GPIO_InitStruct;
__GPIOA_CLK_ENABLE();
/**USART2 GPIO Configuration
PA2 ------> USART2_TX
PA3 ------> USART2_RX
*/
GPIO_InitStruct.Pin = GPIO_PIN_2 | GPIO_PIN_3;
GPIO_InitStruct.Mode = GPIO_MODE_AF_PP;
GPIO_InitStruct.Pull = GPIO_PULLUP;
GPIO_InitStruct.Speed = GPIO_SPEED_LOW;
GPIO_InitStruct.Alternate = GPIO_AF7_USART2;
HAL_GPIO_Init(GPIOA, &GPIO_InitStruct);
}
void uart_init()
{
__USART2_CLK_ENABLE();
huart2.Instance = USART2;
huart2.Init.BaudRate = 115200;
huart2.Init.WordLength = UART_WORDLENGTH_8B;
huart2.Init.StopBits = UART_STOPBITS_1;
huart2.Init.Parity = UART_PARITY_NONE;
huart2.Init.Mode = UART_MODE_TX_RX;
huart2.Init.HwFlowCtl = UART_HWCONTROL_NONE;
huart2.Init.OverSampling = UART_OVERSAMPLING_16;
HAL_UART_Init(&huart2);
/* Peripheral interrupt init*/
HAL_NVIC_SetPriority(USART2_IRQn, 0, 0);
HAL_NVIC_EnableIRQ(USART2_IRQn);
}
int main(void)
{
/* Reset of all peripherals, Initializes the Flash interface and the Systick. */
HAL_Init();
uart_gpio_init();
uart_init();
HAL_UART_Receive_IT(&huart2, &byte, 1);
while(1)
{
}
}
初始化UART的GPIO引腳。
a。啓用適當的GPIO端口時鐘。
b。在交替功能模式下配置UART引腳。
初始化UART外設。
a。啓用適當UART外設的時鐘。
b。配置波特率,字長,停止位和奇偶校驗位,流量控制等。
c。在NVIC中啓用UART IRQ並設置優先級。
在UART ISR(
USART2_IRQHandler
)中調用HAL_UART_IRQHandler(UART_HandleTypeDef* huart);
。當接收程序完成時,
HAL_UART_IRQHandler
將調用HAL_UART_RxCpltCallback
。在此回調中,您可以傳輸接收的字節。使用單個
HAL_UART_Receive_IT(&huart2, &byte, 1);
調用啓動回波循環。
相關問題
- 1. Nucleo STM32F7上的UDP回聲
- 2. 從Nucleo到Windows-7的printf虛擬COM在X-NUCLEO-IKS01A1中不起作用
- 3. stm32 Nucleo-L011K4 I2C確認失敗
- 4. 如何在Nucleo上連接GDB?
- 5. 使用STMF401RE Nucleo計算溫度傳感器的正確公式?
- 6. STM32f207ZG NUCLEO板,ld.exe:節.RxDescripSection VMA [2000e000,2000e09f]重疊節.bss VMA [20000118,2001431b]
- 7. STM32F104RE Nucleo:如何爲電路板安裝/配置外部時鐘?
- 8. STM32 NUCLEO F401RE不能寫入GPIO BSRR的一些位
- 9. 發現
- 10. 發現
- 11. 發現
- 12. Mongodb發現發生
- 13. j2me服務發現和同時發現
- 14. Android藍牙無需發現和發現!
- 15. SOA資源發現與服務發現
- 16. FireDac現場沒有發現
- 17. 發現出現次數
- 18. rfind實現使用發現
- 19. 發現基址
- 20. 發現在SQL
- 21. XML發現
- 22. 不發現socket.io
- 23. 發現的雙
- 24. 發現模式
- 25. 樹根發現
- 26. 發現在python
- 27. SNMPv3發現
- 28. 發現矩形
- 29. 發現長度
- 30. 發現在MATLAB