当前位置: 首页 > news >正文

stm32串口通信(PC--stm32;中断接收方式;附proteus电路图;开发方式:cubeMX)

 单片机型号STM32F103R6:

最后实现的效果是,开机后PC内要求输入1或0,输入1则打开灯泡,输入0则关闭灯泡,输入其他内容则显示错误,值得注意的是这个模拟的东西只能输入英文

之所以用2个LED灯是因为LED电阻粗略一算就是100欧姆,所以懒得再去画其他的东西,真是天助我也

时钟频率HSI 8MHZ;

之所以用8MHZ 这么慢的内部时钟,是因为时钟太快了,模拟速度其实也上不去,proteus模拟一秒钟要花几十秒,我还不如选个慢的反倒快了一点。真的是欲速则不达

 选择PB1作为输出引脚具体设置看图片。选择了推挽输出,初始化输出高电平,接了上拉电阻。

这个是串口设置

 值得一提的是好像proteus里面那个终端的波特率最高只能值5.7万那个样子

所以我把波特率设置为了56000.proteus里面的虚拟PC同样也要这样设置,而且单片机频率最好也设置为8MHZ.

 

//这个是main函数
int main(void)
{
//	uint8_t txtbuff[]="please input num1 or 2 \n\r 1 turn on the light\n\r  2 turn off the light";uint8_t txtbuff[]="please input num 1 or 2\n\r";uint8_t txtbuff1[]="1 turn on the light\n\r";uint8_t txtbuff2[]="2 turn off the light\n\r";/* 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 *//* USER CODE END 2 */HAL_UART_Transmit(&huart1,txtbuff,sizeof(txtbuff),1000);	HAL_UART_Transmit(&huart1,txtbuff1,sizeof(txtbuff1),1000);HAL_UART_Transmit(&huart1,txtbuff2,sizeof(txtbuff2),1000);HAL_UART_Receive_IT(&huart1,(uint8_t*)&aRxBuffer,1);/* Infinite loop *//* USER CODE BEGIN WHILE */while (1){/* USER CODE END WHILE *//* USER CODE BEGIN 3 */}/* USER CODE END 3 */
}
//这个是修改后的函数   需要找到这个函数然后改成这个样子就可以了,建议使用搜索整个project
void USART1_IRQHandler(void)
{/* USER CODE BEGIN USART1_IRQn 0 */uint8_t a[]="light on\n\r";uint8_t b[]="light off\n\r";uint8_t c[]="error badness\n\r";extern uint8_t aRxBuffer;/* USER CODE END USART1_IRQn 0 */HAL_UART_IRQHandler(&huart1);/* USER CODE BEGIN USART1_IRQn 1 */if(aRxBuffer=='0'){HAL_GPIO_WritePin(GPIOB,GPIO_PIN_1,GPIO_PIN_SET);HAL_UART_Transmit(&huart1,b,sizeof(b),1000);	}else if(aRxBuffer=='1'){HAL_GPIO_WritePin(GPIOB,GPIO_PIN_1,GPIO_PIN_RESET);HAL_UART_Transmit(&huart1,a,sizeof(a),1000);	}else{HAL_UART_Transmit(&huart1,c,sizeof(c),1000);	}/* USER CODE END USART1_IRQn 1 */HAL_UART_Receive_IT(&huart1,&aRxBuffer,1);
}

其他的地方都没有修改全都保持默认就可以了

 

http://www.lryc.cn/news/143480.html

相关文章:

  • 计算机毕设 基于机器学习与大数据的糖尿病预测
  • 【数据结构】——查找、散列表的相关习题
  • 提升Java开发效率:掌握HashMap的常见方法与基本原理
  • PostgreSQL系统概述
  • 掌握AI助手的魔法工具:解密Prompt(提示)在AIGC时代的应用「中篇」
  • git svn:使用 git 命令来管理 svn 仓库
  • 软考高级系统架构设计师系列论文九十一:论分布式数据库的设计与实现
  • GeoHash之存储篇
  • 后端项目开发:集成接口文档(swagger-ui)
  • 代码随想录训练营29天|●* 491.递增子序列 * 46.全排列 * 47.全排列 II
  • uniapp日期选择组件优化
  • AI驱动的大数据创新:探索软件开发中的机会和挑战
  • 国产化-银河麒麟V10系统及docker的安装
  • 计算机毕设 基于机器视觉的二维码识别检测 - opencv 二维码 识别检测 机器视觉
  • Redis原理剖析
  • 【送书活动】AI时代,程序员需要焦虑吗?
  • 什么是 JSON:理解和运用 JSON 的基本概念
  • CSDN每日一练 |『异或和』『生命进化书』『熊孩子拜访』2023-08-27
  • 整数拆分乘积最大
  • 浅谈 Linux 下 vim 的使用
  • leetcode:只出现一次的数字Ⅲ(详解)
  • 【vue3.0 使用组合式定义组件】
  • Tensor-动手学深度学习-李沐_笔记
  • Kafka生产者原理 kafka生产者发送流程 kafka消息发送到集群步骤 kafka如何发送消息 kafka详解
  • Uniapp笔记(七)uniapp打包
  • 软考高级系统架构设计师系列论文七十六:论基于构件的软件开发
  • 基于Thinkphp6框架全新UI的AI网址导航系统源码
  • Html 补充
  • Visual Studio编译出来的程序无法在其它电脑上运行
  • 习题练习 C语言(暑期第二弹)