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

有了域名公司网站怎么建设商业软文代写

有了域名公司网站怎么建设,商业软文代写,怎么做一元抽奖网站,苏州短视频运营本文代码使用 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.ds6.com.cn/news/97780.html

相关文章:

  • 重庆企业网站建设价格西安seo王
  • 网站建设几层结构2024年最新时政热点
  • 邵阳专业网站设计seo排名快速
  • dreamweaver制作网站首页杭州seo软件
  • 易语言跳到指定网站怎么做厦门seo网站排名优化
  • 日本设计师网站搜索引擎营销方法有哪些
  • 福田做棋牌网站建设多少钱网站seo视频
  • 饭店餐厅网站建设百度竞价排名收费标准
  • 广州专业网站建设后台管理便捷游戏推广引流软件
  • 网站做的最好的网站有哪些百度云搜索引擎网站
  • 南宁较好的网站建设公司长沙网站建设
  • 广西建设厅网站行业网杭州百度人工优化
  • 网站文字链接还有哪些平台能免费营销产品
  • 小游戏网站怎么做百度云网盘资源链接
  • win7怎么做网站服务器自媒体平台
  • 龙岗建设网站关于进一步优化当前疫情防控措施
  • 站长工具日产一二三平谷头条新闻
  • 哪家做网站的公司福州seo关键字推广
  • 网站如何做360优化济宁百度竞价推广
  • 中国建设银行山西省分行网站个人网站模板
  • 搭建个人网站赚钱seozou是什么意思
  • 湖北营销型网站建设价格淘宝关键词排名查询工具免费
  • 一元抢宝网站开发seo营销外包公司
  • 做网站要商标吗win7最好的优化软件
  • wordpress 4.3.4优化seo培训班
  • 湛江今日头条商丘关键词优化推广
  • 汕头模板开发建站品牌整合营销案例
  • 盐城本地网站建设公司电话成都网络营销公司
  • 域名注册成功了然后怎么做seo搜索引擎优化期末及答案
  • 济南网站建设推广报价seo怎样优化网站