stm32 通过串口进行信息交流 并控制led亮灭

发布者:温暖微风最新更新时间:2019-01-14 来源: eefocus关键字:stm32  串口  控制led 手机看文章 扫描二维码
随时随地手机看文章

h  关闭黄色


l  关闭蓝色


g 关闭绿色


a 打开全部




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 */

 

  /* USER CODE END 2 */

 

  /* Infinite loop */

  /* USER CODE BEGIN WHILE */

  while (1)  //ËÀÑ­»·  ²é¿´Ö´ÐÐЧ¹û

  {

 

  /* USER CODE END WHILE */

 

  /* USER CODE BEGIN 3 */

uint8_t ch[10]="";


HAL_UART_Receive(&huart1, ch, 10, 200);

if(ch[0] == 'l')

{

HAL_GPIO_WritePin(GPIOB, GPIO_PIN_1, GPIO_PIN_SET);

HAL_UART_Transmit(&huart1, "   blue off   ", 10, 200);

HAL_Delay(500);

}

else if(ch[0]=='g')

{

HAL_GPIO_WritePin(GPIOB, GPIO_PIN_0, GPIO_PIN_SET);

HAL_UART_Transmit(&huart1, "   grean off   ", 10, 200);

HAL_Delay(500);

}

else if(ch[0]=='h')

{

HAL_GPIO_WritePin(GPIOB, GPIO_PIN_2, GPIO_PIN_SET);

HAL_UART_Transmit(&huart1, "   yellow off   ", 10, 200);

HAL_Delay(500);

}

else if(ch[0]=='a')

{

HAL_GPIO_WritePin(GPIOB, GPIO_PIN_0|GPIO_PIN_1|GPIO_PIN_2, GPIO_PIN_RESET);

HAL_UART_Transmit(&huart1, "   all led on  ", 10, 200);

HAL_Delay(500);

}

  }

  /* USER CODE END 3 */

 

}

简单开关控制


#include "main.h"

#include "stm32f0xx_hal.h"

 

/* USER CODE BEGIN Includes */

 

/* USER CODE END Includes */

 

/* Private variables ---------------------------------------------------------*/

UART_HandleTypeDef huart1;

 

/* USER CODE BEGIN PV */

/* Private variables ---------------------------------------------------------*/

 

/* USER CODE END PV */

 

/* Private function prototypes -----------------------------------------------*/

void SystemClock_Config(void);

static void MX_GPIO_Init(void);

static void MX_USART1_UART_Init(void);

 

/* USER CODE BEGIN PFP */

/* Private function prototypes -----------------------------------------------*/

 

/* USER CODE END PFP */

 

/* USER CODE BEGIN 0 */

 

/* USER CODE END 0 */

 

/**

  * @brief  The application entry point.

  *

  * @retval None

  */

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 */

 

  /* USER CODE END 2 */

 

  /* Infinite loop */

  /* USER CODE BEGIN WHILE */

  while (1)

  {

 

  /* USER CODE END WHILE */

 

  /* USER CODE BEGIN 3 */


uint8_t data = 0;

HAL_UART_Receive(&huart1, &data, 1, 0);


if(data == 'l')

{

HAL_GPIO_WritePin(GPIOB, GPIO_PIN_0|GPIO_PIN_1|GPIO_PIN_2, GPIO_PIN_RESET);

HAL_UART_Transmit(&huart1, &data, 1, 0);

}

else if(data == 'h')

{

HAL_GPIO_WritePin(GPIOB, GPIO_PIN_0|GPIO_PIN_1|GPIO_PIN_2, GPIO_PIN_SET);

HAL_UART_Transmit(&huart1, &data, 1, 0);

}


  }

  /* USER CODE END 3 */

 

}

关键字:stm32  串口  控制led 引用地址:stm32 通过串口进行信息交流 并控制led亮灭

上一篇:STM32F407ZET6 用串口通过键盘控制LED灯的亮灭
下一篇:STM32延时消除抖动个人理解

推荐阅读最新更新时间:2024-03-16 16:22

STM32CubeMX串口接收数据(DMA方式,HAL库)
使用DMA方式可以减轻CPU负担,此例子相关配置可以参考 STM32CubeMX串口接收数据(中断方式,HAL库) (1)设置USART1中断,NVIC配置如下图 (2)设置USART1的DMA,如下图 注意:要将RX的模式设置为circular ,否则只能接收一次,如果这里不作设置,网上也有 其他方法 介绍代码实现多次接收的,但既然用到了STM32CubeMX就尽量发挥最大作用吧! (3)生成项目工程 (4)在main.c里设置变量以及启动DMA接收 /* USER CODE BEGIN PV */ /* Private variables ------------------------------------
[单片机]
STM32CubeMX<font color='red'>串口</font>接收数据(DMA方式,HAL库)
如何设计基于stm32的数字示波器
随着集成电路的发展和数字信号处理技术的采用,数字示波器已成为集显示、测量、运算、分析、记录等各种功能于一体的智能化测量仪器。数字示波器在性能上也逐渐超越模拟示波器,并有取而代之的趋势。与模拟示波器相比,数字示波器不仅具有可存储波形、体积小、功耗低,使用方便等优点,而且还具有强大的信号实时处理分析功能。因此,数字示波器的使用越来越广泛。目前我国国内自主研发的高性能数字示波器还是比较少,广泛使用的仍是国外产品。因此,有必要对高性能数字示波器进行广泛和深入研究。 本文通过采用高速高性能器件,设计了一实时采样率为60 msa/s的宽带数字示波器。 1 数字示波器的性能参数设计 数字存储示波器的指标很多,包括采样率、带宽、灵敏度、通
[测试测量]
如何设计基于<font color='red'>stm32</font>的数字示波器
使用STM32定时器PWM功能时的小问题
有人使用STM32定时器的PWM功能,遇到点小疑问,这里一起看看。 他先将STM32某定时器计数周期设为0xff,单向递增计数模式,OC比较值设为0x7F。在某时刻将新的计数周期0x7F与比较值0x3F加载到影子寄存器。当正在进行的一个周期结束后,经示波器测量确实可以看到其下一个周期发生变化,但其周期明显与预设值对应不上!再次经过一个周期,定时器才会按照预设值稳定输出。 以上是咨询者不算很清晰的描述【其实咨询TIMER问题最好配上时序图】,但可以了解到他要做的事情就是在ARR=0xff,ccr=0x7F的PWM输出状态下,于某时刻赋予ARR和CCR新值以改变输出波形。 事情不算复杂,疑点就是为什么需要2个周期延时后才能有基
[单片机]
使用<font color='red'>STM32</font>定时器PWM功能时的小问题
STM32 USB学习笔记2
主机环境:Windows 7 SP1 开发环境:MDK5.14 目标板:STM32F103C8T6 开发库:STM32F1Cube库和STM32_USB_Device_Library STM32Cube库中提供了一些有关USB的例程,在其工程目录下的Applications目录中,这里打开STM3210E_EVAL目录,可以看到如下例程: 这里选取一个简单的例子CDC_Standalone,为一个USB通信例程,具体实现是一个USB转串口的功能,相当于USB串口线。把示例里面的inc和src目录下的文件拷贝到新建工程中,这里是把跟usb通信相关的文件放到了vcp目录下。文件目录结构如下: 其中BSP目录很简单,由于所购
[单片机]
STM32CUBEIDE配置FreeRTOS
环境:STM32CUBEIDE 版本1.02 STM32103C8T6最小系统板 F1,1.8.0 版本固件包 新建工程,选择芯片,不多做赘述 RCC中选择时钟源为 Crytal/Ceramic Resonator SYS 中Debug 选择为 serial Write,这很重要,若选择NO debug 则在烧写一次程序后,芯片会锁住变砖。若不小心变砖了,参考这篇文章入口。 SYS 中 Timebase 不能选择为 systick ,因为FreeRTOS 会使用systick 作为时钟节拍。为了不冲突,HAL库的时基选用别的。 Middleware中选择 FreeRTOS,在interface 中选择 CMSI
[单片机]
AVR单片机教程——串口接收
上一讲中,我们实现了单片机开发板向电脑传输数据。在这一讲中,我们将通过电脑向单片机发送指令,让单片机根据指令控制LED。这一次,两端的TX与RX需要交叉连接,单片机TX连接串口工具RX也是需要的,因为程序会根据指令反馈信息。 为了简单起见,我们的程序只需要控制4个板载LED。指令包含两个字节:第一个字节为r、y、g、b中的一个,分别表示红、黄、绿、蓝灯;第二个字节为0或1,表示灯不亮或亮。 然而,a2这样的指令是没有意义的,却是可能出现的。即使用户已经熟悉了这8条指令,也可能会不小心打错。我们应当记住,用户是世界上最愚蠢的人,我们要把他们可能犯的错误都想到,然后在程序中合理地处理。比如,对于不合法的指令,程序忽略指令,并返
[单片机]
STM32独立看门狗详解
本文将介绍STM32的看门狗中的独立看门狗,并通过实例来喂狗、体验喂狗与不喂狗的区别。 ①STM32看门狗介绍之独立看门狗 ②使用STM32CUBEMX来配置工程文件 ③代码实现,按键按下喂狗、按键不按下不喂狗程序复位 ①STM32看门狗介绍之独立看门狗 看门狗定时器本质上是一个计数器、给计数器一个数值,在程序 运行后计数器的值开始递减,当计数器的值减到0是会将程序复位,若在减到0之前给计数器更新一下值“喂狗”则从最新的值开始递减; 用途: 1、这样做的好处就是程序跑飞、死机时,通过复位的方式使得程序又正常运行; 2、用于将系统从休眠或者空闲模式唤醒。 看门狗的种类: 独立看门狗IWDG 特点:专用时钟LSI、低功耗模式仍
[单片机]
<font color='red'>STM32</font>独立看门狗详解
认识STM32的复位与电源管理
复位功能是一个非常重要的功能,大到PC,小到单片机,每一台计算机系统都有。在我小时候,去网吧的时候,但凡是电脑出现任何一点小问题,网管的第一回答一定是重启。重启和复位就是同一个意思。 发展到现在PC已经很稳定了,复位按钮慢慢的淡出我们的视野,但是在主板上我们依然可以找到复位电路的存在。单片机上的复位功能也有着类似的变化,在我们学单片机那个年代,需要在单片机的外部一个复位电路,从专用引脚上接一个电阻和电容组成的复位电路。如果没有这个电路,单片机就没法工作。现在的新款单片机都把复位功能内置到单片机中。如果是开发项目要手动复位,我们可以在复位引脚上接一个按键用来手动复位。 复位 复位功能的作用是让RAM 中的数据清空,让所有连接
[单片机]
认识<font color='red'>STM32</font>的复位与电源管理
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved