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

app公司管理广州短视频seo哪家好

app公司管理,广州短视频seo哪家好,wordpress功能修改,关于科技园区建设文章的网站本文代码使用 HAL 库。 文章目录前言一、中断控制二、USART中断使用1. 中断优先级设置 :2. 使能中断3. 使能UART的发送、接收中断4. 中断收发函数5. 中断处理函数6. 中断收发回调函数三、串口中断实验串口中断发送数据点亮 led:实验现象:总结…

本文代码使用 HAL 库。

文章目录

  • 前言
  • 一、中断控制
  • 二、USART中断使用
      • 1. 中断优先级设置 :
      • 2. 使能中断
      • 3. 使能UART的发送、接收中断
      • 4. 中断收发函数
      • 5. 中断处理函数
      • 6. 中断收发回调函数
  • 三、串口中断实验
      • 串口中断发送数据点亮 led:
      • 实验现象:
  • 总结

前言

上一篇文章 详细介绍了 USART 串口 不使用中断 发送接收数据 ,这篇文章 将介绍如何 使用中断控制 USART 串口 发送接收数据。

对于如何根据 CubeMX 生成 USART 的工程,可以参考我的上篇文章,也介绍了 关于生成 usart.c 代码的解析 : STM32Cube串口USART发送接收数据


一、中断控制

在这里插入图片描述

  1. 中断: 是一种特殊的处理程序,能够 临时中断 正在运行的程序,以 处理紧急 的事件,然后 恢复 正在运行的程序。当 外部事件发生 时,中断程序 会被 调用,以 处理这些事件。

USART 收发数据时,可以 在数据接收之后立即触发中断,以此提高数据传输效率。

  1. 中断优先级
  • 抢占优先级 :抢占优先级可以实现中断嵌套,抢占 优先级级数低的可抢占级数高的

  • 子优先级 :子优先级无法实现中断嵌套,同一时刻 两个子 优先级不同 的 中断 来临,则 先处理优先级高的 即优先级级数低的中断。若 先后发生 则先处理 上一个中断,再 处理后面的中断。

一旦确定了优先级组别,抢占优先级和子优先级的范围就确定下来了且除非复位否则无法更改

二、USART中断使用

1. 中断优先级设置 :

①使用 CubeMX 设置优先级。
在这里插入图片描述

②也可以使用 HAL_NVIC_SetPriority() 设置优先级:

HAL_NVIC_SetPriority(IRQn_Type IRQn, uint32_t PreemptPriority, uint32_t SubPriority)

比如将 USART1 的中断设置为次高级优先级: HAL_NVIC_SetPriority(USART1_IRQn, 0, 1);

2. 使能中断

①使用 CubeMX 使能中断:
在这里插入图片描述
②使用 HAL_NVIC_EnableIRQ() 使能中断。

HAL_NVIC_EnableIRQ(IRQn_Type IRQn)

3. 使能UART的发送、接收中断

__HAL_UART_ENABLE_IT(__HANDLE__, __INTERRUPT__)

例如:设置 USART1 为 传输完成中断,接收数据寄存器不为空中断。
在这里插入图片描述

__HAL_UART_ENABLE_IT(&huart1, UART_IT_RXNE | UART_IT_RXNE);

4. 中断收发函数

//中断发送
HAL_UART_Transmit_IT(UART_HandleTypeDef *huart, uint8_t *pData, uint16_t Size);//中断接收
HAL_UART_Receive_IT(UART_HandleTypeDef *huart, uint8_t *pData, uint16_t Size)

5. 中断处理函数

在中断回调函数 USART1_IRQHandler ( ) 中进行中断处理,可以调用 HAL_UART_IRQHandler ( )

/*中断处理函数*/
void USART1_IRQHandler(void)
{HAL_UART_IRQHandler(&huart1);
}

6. 中断收发回调函数

重定向 HAL_UART_RxCpltCallback( )HAL_UART_TxCpltCallback( ) 函数进行进一步任务处理。

/* 中断接收回调函数 */
__weak void HAL_UART_RxCpltCallback(UART_HandleTypeDef *huart)/* 中断发送回调函数 */
__weak void HAL_UART_TxCpltCallback(UART_HandleTypeDef *huart)

三、串口中断实验

串口中断发送数据点亮 led:

对 LED 代码不理解的可以参考我之前的文章,详细介绍了 LED:STM32f103 CubeMX封装 led程序

void Enable(void)  /*使能*/
{HAL_NVIC_SetPriority(USART1_IRQn, 0, 1); //中断优先级设置HAL_NVIC_EnableIRQ(USART1_IRQn);  //使能中断__HAL_UART_ENABLE_IT(&huart1, UART_IT_RXNE | UART_IT_RXNE);
}
void Disable(void)  /*失能*/
{__HAL_UART_DISABLE_IT(&huart1, UART_IT_RXNE | UART_IT_RXNE);HAL_NVIC_DisableIRQ(USART1_IRQn);
}
void USART1_IRQHandler(void)  /*中断处理函数*/
{HAL_UART_IRQHandler(&huart1);
}
void HAL_UART_RxCpltCallback(UART_HandleTypeDef *huart)  //中断接收
{if(huart->Instance == USART1){re_data = 1;}
}
void HAL_UART_TxCpltCallback(UART_HandleTypeDef *huart)  //中断发送
{if(huart->Instance == USART1){tr_data = 1;}
}

这里我就不介绍 printf 的重定向问题了,我之前的文章 已详细介绍了 printf 的内容:STM32Cube串口USART发送接收数据

  a = getchar(); //获得一个字符switch(a){case 'B':{GREEN_ON();  //点亮LEDprintf("Led is on!\r\n");  }break;case 'b':{GREEN_OFF();  //熄灭LEDprintf("Led is off!\r\n");  }break;default:break;}

实验现象:

实验现象 我放在了 B占,有兴趣的可以看看:

STM32 串口USART 发送数据控制led亮灭


总结

如果有不理解的可以 评论留言 也可以 私信我 ,大家一起讨论。

http://www.yayakq.cn/news/690478/

相关文章:

  • 安卓盒子 做网站设计网站 常用
  • 网站如何做聚合页面logo在线制作神器
  • 网站怎么做用什么软件海南网站建站
  • 夜场网站建设移动互联网营销
  • 做计算机网站祭祀网站建设方案
  • 网站地址怎么做超链接东莞网站建设哪家最好
  • 网站用哪种语言用eclipse做网站
  • 为企业做网站还有前途吗wordpress延迟加载插件
  • 电子商务网站建设ppt模板wordpress微信群大全
  • 办公用纸网站建设旅游网站的建设开题报告
  • 潍坊知名网站建设最新报价企业做网站公司怎么样
  • 设计素材网站线上iis默认网站删除
  • 免费的个人简历模板网站wordpress主动推送
  • 三站合一网站建设广州宣传片制作
  • 宣传型网站在wordpress上添加播放视频
  • 如何打击网站深圳品牌做网站公司
  • 仿顺丰优选网站源码福田祥菱箱货
  • 织梦网站站标网站买流量是怎么做的
  • 东莞设计网站企业精神标语
  • 不良网站浏览窗口九江网站建设
  • 电子工厂网站建设宁波北仑做公司网站
  • 新手做网站做那个免费国外永久域名注册
  • 网站开发工程师优势做网站网站赚
  • 织梦 去掉我的网站企业网站建站系统
  • 做外贸网站商城dedecms做网站全教程
  • 动物做logo的网站端州网站建设
  • 网站基建建设东营定制网站建设服务
  • seo团队郑州网站关键字优化
  • 河北省住房和城乡建设厅网站首页电脑网站生成手机网站
  • 做展示型网站多少钱代做网站地图