前言
基于STM32CubeIDE与STM32F411RE的硬件仿真
一、STM32CubeIDE的安装
-
- 与CubeMX安装方法一致,去官网下载即可
-
- 百度网盘下载 解压码:gzip
需要注册MyST账号,但是既然都下载过CubeMX,应该都有
二、芯片配置
1.配置UART
2.开启中断
3.开启DMA(接收不定长)
Ctrl+S自动生成代码以后进入下一步
三、代码
/* USER CODE BEGIN PV */
uint8_t receive[50];
int on = -1;
int off = -1;
/* USER CODE END PV */
/* USER CODE BEGIN 0 */
void HAL_UARTEx_RxEventCallback(UART_HandleTypeDef *huart, uint16_t Size){
if (huart == &huart2){
on = (int)(receive[9]-'0');
off = (int)(receive[10]-'0');
on = on ? on : 3;
off = off ? off : 3;
on = on * 1000;
off = off * 1000;
HAL_UARTEx_ReceiveToIdle_DMA(&huart2, receive, sizeof(receive));
__HAL_DMA_DISABLE_IT(&hdma_usart2_rx,DMA_IT_HT);
}
}
/* USER CODE END 0 */
/* USER CODE BEGIN WHILE */
while (1)
{
HAL_UARTEx_ReceiveToIdle_DMA(&huart2, receive, sizeof(receive));
__HAL_DMA_DISABLE_IT(&hdma_usart2_rx,DMA_IT_HT);
if (on > 0 && off > 0){
HAL_UART_Transmit(&huart2, "on", 2, 100);
HAL_GPIO_WritePin(LED_GPIO_Port, LED_Pin, GPIO_PIN_SET);
HAL_Delay(on);
HAL_UART_Transmit(&huart2, "off", 2, 100);
HAL_GPIO_WritePin(LED_GPIO_Port, LED_Pin, GPIO_PIN_RESET);
HAL_Delay(off);
}
/* USER CODE END WHILE */
/* USER CODE BEGIN 3 */
}
/* USER CODE END 3 */
总结
结束,发送格式:学号+空格+姓名