基于protues仿真及stm32cubemx的基础外设使用-------串口中断
protues
放置元件及连线
配置
时钟频率选择8M,路径选择hex文件所在路径;如果是使用外置晶振作为时钟,需要在原理图绘制起振电路。
stm32CubeMX
时钟配置(保持默认)
使能串口及中断
代码编写
main.c
uint8_t rxData[100];//定义接收数组
HAL_UART_Receive_IT(&huart1,rxData,1);// 设置中断接收//参数为:端口号,接收指针,长度(接收到多少个字节触发回调函数,需要注意)
void HAL_UART_RxCpltCallback(UART_HandleTypeDef *huart)
{HAL_UART_Transmit(&huart1,rxData,1,100);// 发送接收到的字符HAL_UART_Receive_IT(&huart1,rxData,1); //再次设置
}
```/* USER CODE BEGIN Header */
/********************************************************************************* @file : main.c* @brief : Main program body******************************************************************************* @attention** <h2><center>© Copyright (c) 2021 STMicroelectronics.* All rights reserved.</center></h2>** This software component is licensed by ST under BSD 3-Clause license,* the "License"; You may not use this file except in compliance with the* License. You may obtain a copy of the License at:* opensource.org/licenses/BSD-3-Clause********************************************************************************/
/* USER CODE END Header */
/* Includes ------------------------------------------------------------------*/
#include "main.h"
#include "usart.h"
#include "gpio.h"/* Private includes ----------------------------------------------------------*/
/* USER CODE BEGIN Includes *//* USER CODE END Includes *//* Private typedef -----------------------------------------------------------*/
/* USER CODE BEGIN PTD *//* USER CODE END PTD *//* Private define ------------------------------------------------------------*/
/* USER CODE BEGIN PD */
/* USER CODE END PD *//* Private macro -------------------------------------------------------------*/
/* USER CODE BEGIN PM *//* USER CODE END PM *//* Private variables ---------------------------------------------------------*//* USER CODE BEGIN PV */
uint8_t rxData[100];
/* USER CODE END PV *//* Private function prototypes -----------------------------------------------*/
void SystemClock_Config(void);
/* USER CODE BEGIN PFP *//* USER CODE END PFP *//* Private user code ---------------------------------------------------------*/
/* USER CODE BEGIN 0 *//* USER CODE END 0 *//*** @brief The application entry point.* @retval int*/
int main(void)
{/* USER CODE BEGIN 1 *//* USER CODE END 1 *//* MCU Configuration--------------------------------------------------------*//* Reset of all peripherals, Initializes the Flash interface and the Systick. */HAL_Init();/* USER CODE BEGIN Init *//* USER CODE END Init *//* Configure the system clock */SystemClock_Config();/* USER CODE BEGIN SysInit *//* USER CODE END SysInit *//* Initialize all configured peripherals */MX_GPIO_Init();MX_USART1_UART_Init();/* USER CODE BEGIN 2 */HAL_UART_Receive_IT(&huart1,rxData,1);HAL_UART_Transmit(&huart1,"hello\n",7,100);/* USER CODE END 2 *//* Infinite loop *//* USER CODE BEGIN WHILE */while (1){/* USER CODE END WHILE *//* USER CODE BEGIN 3 */}/* USER CODE END 3 */
}/*** @brief System Clock Configuration* @retval None*/
void SystemClock_Config(void)
{RCC_OscInitTypeDef RCC_OscInitStruct = {0};RCC_ClkInitTypeDef RCC_ClkInitStruct = {0};/** Initializes the RCC Oscillators according to the specified parameters* in the RCC_OscInitTypeDef structure.*/RCC_OscInitStruct.OscillatorType = RCC_OSCILLATORTYPE_HSI;RCC_OscInitStruct.HSIState = RCC_HSI_ON;RCC_OscInitStruct.HSICalibrationValue = RCC_HSICALIBRATION_DEFAULT;RCC_OscInitStruct.PLL.PLLState = RCC_PLL_NONE;if (HAL_RCC_OscConfig(&RCC_OscInitStruct) != HAL_OK){Error_Handler();}/** Initializes the CPU, AHB and APB buses clocks*/RCC_ClkInitStruct.ClockType = RCC_CLOCKTYPE_HCLK|RCC_CLOCKTYPE_SYSCLK|RCC_CLOCKTYPE_PCLK1|RCC_CLOCKTYPE_PCLK2;RCC_ClkInitStruct.SYSCLKSource = RCC_SYSCLKSOURCE_HSI;RCC_ClkInitStruct.AHBCLKDivider = RCC_SYSCLK_DIV1;RCC_ClkInitStruct.APB1CLKDivider = RCC_HCLK_DIV2;RCC_ClkInitStruct.APB2CLKDivider = RCC_HCLK_DIV1;if (HAL_RCC_ClockConfig(&RCC_ClkInitStruct, FLASH_LATENCY_0) != HAL_OK){Error_Handler();}
}/* USER CODE BEGIN 4 */
void HAL_UART_RxCpltCallback(UART_HandleTypeDef *huart)
{HAL_UART_Transmit(&huart1,rxData,1,100);HAL_UART_Receive_IT(&huart1,rxData,1);
}
/* USER CODE END 4 *//*** @brief This function is executed in case of error occurrence.* @retval None*/
void Error_Handler(void)
{/* USER CODE BEGIN Error_Handler_Debug *//* User can add his own implementation to report the HAL error return state */__disable_irq();while (1){}/* USER CODE END Error_Handler_Debug */
}#ifdef USE_FULL_ASSERT
/*** @brief Reports the name of the source file and the source line number* where the assert_param error has occurred.* @param file: pointer to the source file name* @param line: assert_param error line source number* @retval None*/
void assert_failed(uint8_t *file, uint32_t line)
{/* USER CODE BEGIN 6 *//* User can add his own implementation to report the file name and line number,ex: printf("Wrong parameters value: file %s on line %d\r\n", file, line) *//* USER CODE END 6 */
}
#endif /* USE_FULL_ASSERT *//************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/```c
在这里插入代码片
结果图
基于protues仿真及stm32cubemx的基础外设使用-------串口中断相关推荐
- 简单的红绿灯c语言程序,基于Protues仿真的简单交通信号灯附C语言程序
简单的交通信号灯实现 本文中主要利用89C52单片机实现一个简单的交通信号灯系统,代码编写借助keil软件编写,再结合protues软件进行仿真.基本实现简单的交通信号等功能. 一.代码如下 #inc ...
- 基于protues仿真设计一款乒乓球游戏机
一.设计题目 设计一款乒乓球游戏机 基本要求: 用 8 个发光二极管表示球:用两个按钮分别表示甲乙两个球员的球拍: 一方发球后,球以固定速度向另一方运动(发光二极管依次点亮),当球达到最后一个发光 ...
- 51单片机16×16点阵led屏滚动显示+protues仿真+按键功能(史上最全)
文章目录 前言 一.protues仿真 安装软件 绘制原理图 二.keil程序编写 1. 三.仿真示例 前言 本次任务:基于protues仿真实现at89c51控制16×16点阵led屏实现流水文字滚 ...
- 基于单片机的电子时钟设计(keil+protues仿真,含代码及原理图)
本学期单片机课程要求做课程设计,我选取的课题如下: 基于单片机的电子时钟设计,要求: (1)实时显示当前时间: (2)能够对时间进行设置: (3)包括年月日,小时,分钟,秒. (4)整点提醒功能. 经 ...
- 基于51单片机PT100热电偶AD转换protues仿真设计
基于51单片机PT100热电偶AD转换protues仿真设计 (源码+仿真) 仿真原版本:proteus 7.8 程序编译器:keil 4/keil 5 编程语言:C语言 设计编号:S0023 这里写 ...
- 基于51单片机手动计步器protues仿真设计
基于51单片机手动计步器protues仿真设计 (源码+仿真) 仿真原版本:proteus 7.8 程序编译器:keil 4/keil 5 编程语言:C语言 设计编号:S0021 目录标题 基于51单 ...
- 基于51单片机的4路交流电机电流监测系统Protues仿真
功能: 0.本项目采用STC89C52作为单片机系统的控制MCU 1.系统实时显示当前监测的4路电流,当检测的电流超过阈值时,蜂鸣器报警,并串口上报过流通道电流信息, 用户可通过串口发送命令的方式控制 ...
- 用MATLAB分析电能质量,基于matlab仿真的电能质量研究.doc
基于matlab仿真的电能质量研究.doc 西南交大网络教育学院毕业设计第1页1题目基于MATLAB仿真的电能质量研究院系西南交通大学网络教育学院专业电气工程及其自动化姓名翟洪林指导教师郭蕾西南交通大 ...
- 从光波叠加到条纹分布的matlab仿真,基于Matlab仿真算法的光源空间相干性研究
王帆, 张永安, 阳胜, 郭胤初, 张亚萍. . 基于Matlab仿真算法的光源空间相干性研究. 光学学报, 2017, 54(9): 092601-. Wang Fan, Zhang Yongan, ...
- STM32CubeMX-HAL库开发笔记(常用语句)-基于Proteus仿真
STM32CubeMX-HAL库开发笔记 前言 我自己刚刚开始学习STM32时,跟随正点原子课程,一节节课慢慢学,裸机开发可以深入了解和学习到寄存器内部,但是也偏无聊一点.后来,在做项目时,发现很难选 ...
最新文章
- innerText与innerHTML的区别
- 顺序队列相关操作(C语言实现)
- Ognl标签常用例子 只能在Struts2中使用
- hide subscribers is a good approach if you have a very limited subscribers
- NSHashTable and NSMapTable
- JavaScript基础知识必知!
- Python_装饰器Decorator
- pdol链接mysql_MySQL5.7.11免安装版的安装和配置:解决MYSQL服务无法启动问题
- Numpy Statistics 统计函数
- 为什么我会放弃 Webpack 而选择 Vite
- linux在当前目录下打开终端,linux - 终端:在窗口中打开当前路径? - Ubuntu问答...
- 5G工业路由器 物联网终端应用
- python阈值分割_Python实现otsu阈值分割算法
- 2020-2022年最全湖南省矢量数据(路网含城市道路、铁路(包括地铁、轻轨)高速、国道、省道、县道、乡道+几百万个poi数据+省市县乡镇行政区划+河流水系网+建筑轮廓+30米dem等shp数据
- css 网格布局_CSS网格布局三年
- CS_2023_01
- 原创 | 2020年数据科学与大数据技术专业填报指南(附院校及专业介绍)
- pxe高效批量网络装机--手把手教学
- 这一篇TCP总结,请务必收下!
- Vue3+Vite+TS+Eslint搭建生产项目