IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 嵌入式 -> 外部中断信号控制LED灯开关 -> 正文阅读

[嵌入式]外部中断信号控制LED灯开关

HAL库中串口发送的重要函数

阻塞式发送函数(初学者,推荐使用)
HAL_StatusTypeDef HAL_UART_Transmit(UART_HandleTypeDef *huart,uint8_t *pData,
uint16_t Size,uint32_t Timeout);
非阻塞式发送函数
HAL_StatusTypeDef HAL_UART_Transmit_IT(UART_HandleTypeDef *huart,uint8_t *pData,
uint16_t Size);
发送完毕中断回调函数
void HAL_UART_TxCpltCallback(UART_HandleTypeDef *huart);? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? void?HAL_UART_TxHalfCpltCallback(UART_HandleTypeDef *huart);

HAL库中串口接收的重要函数

阻塞式发送函数
HAL_StatusTypeDef HAL_UART_Receive(UART_HandleTypeDef *huart,uint8_t*pData,uint16_t Size,uint32_t Timeout);
非阻塞式发送函数(推荐使用)
HAL_StatusTypeDef HAL_UART_Receive_IT(UART_HandleTypeDef *huart,uint8_t *pData,
uint16_t Size);
发送完毕中断回调函数
void HAL_UART_RxCpltCallback(UART_HandleTypeDef *huart);? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? void HAL_UART_RxHalfCpltCallback(UART_HandleTypeDef *huart);
(发送推荐阻塞式不用回调(事件多则用非阻塞),接收用非阻塞。 )

任务描述:

(1)开机后,向串口1发送“hello world! ”。

(2)串口1收到字节指令“OxA1”,打开LED1,发送“LED1 Open ! ”。

(3)串口1收到字节指令“OxA2”,关闭LED1,发送“LED1 Closed ! ”。

(4)在串口发送过程中,打开LED2作为发送数据指示灯。

代码展示:

#include "main.h"
#include "usart.h"
#include "gpio.h"
#define LED1_ON() HAL_GPIO_WritePin(GPIOD,GPIO_PIN_3,GPIO_PIN_SET);//开关灯宏定义
#define LED1_OFF() HAL_GPIO_WritePin(GPIOD,GPIO_PIN_3,GPIO_PIN_RESET);
#define LED2_ON() HAL_GPIO_WritePin(GPIOD,GPIO_PIN_4,GPIO_PIN_SET);
#define LED2_OFF() HAL_GPIO_WritePin(GPIOD,GPIO_PIN_4,GPIO_PIN_RESET);

uint8_t Tx_str1[]= "hello world\n\r";
uint8_t Tx_str2[]= "led1 open!\n\r";
uint8_t Tx_str3[]= "led1 close!\n\r";
uint8_t Rx_dat = 0;

void HAL_UART_RxCpltCallback(UART_HandleTypeDef *huart)//回调函数
{
	if(huart->Instance == USART1)
	{
		if(Rx_dat == 0xa1)//接收到‘a1’led1打开led2闪烁一次
		{
			LED1_ON();
			LED2_ON(); 
			HAL_UART_Transmit(&huart1,Tx_str2,sizeof(Tx_str2),10000);
			LED2_OFF();
			HAL_UART_Receive_IT(&huart1,&Rx_dat,1);
		}
		else if(Rx_dat == 0xa2)//接收到‘a2’led1关闭led2闪烁一次
		{
			LED1_OFF();
			LED2_ON(); 
			HAL_UART_Transmit(&huart1,Tx_str3,sizeof(Tx_str3),10000);
			LED2_OFF();
			HAL_UART_Receive_IT(&huart1,&Rx_dat,1);	
		}
	}
}
int main(void)
{
  HAL_Init();
  SystemClock_Config();
  MX_GPIO_Init();
  MX_USART1_UART_Init();
  /* USER CODE BEGIN 2 */
  LED1_ON(); //复位led1闪烁
  HAL_UART_Transmit(&huart1,Tx_str1,sizeof(Tx_str1),10000);
  LED1_OFF();
  HAL_UART_Receive_IT(&huart1,&Rx_dat,1);
  /* USER CODE END 2 */
}

usart使用方法可在“stm32fqxx_hal_uart.c”文件中的##### How to use this driver #####里找到使用函数方法。

但是目前串口只能发送一次数据,代码还在修改ing...
?

  嵌入式 最新文章
基于高精度单片机开发红外测温仪方案
89C51单片机与DAC0832
基于51单片机宠物自动投料喂食器控制系统仿
《痞子衡嵌入式半月刊》 第 68 期
多思计组实验实验七 简单模型机实验
CSC7720
启明智显分享| ESP32学习笔记参考--PWM(脉冲
STM32初探
STM32 总结
【STM32】CubeMX例程四---定时器中断(附工
上一篇文章      下一篇文章      查看所有文章
加:2021-10-01 17:03:16  更:2021-10-01 17:04:01 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/26 4:47:38-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码