当前位置: 首页 > 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.yayakq.cn/news/428284/

相关文章:

  • 学校类网站建设的分析建工网校一建
  • 宽屏公司网站源码php怎么建立挣流量的网站
  • 平台网站怎么建设高水平高职院校 建设网站
  • 清河网站制作wordpress本地运行速度慢
  • 自己的网站怎么做网盘浙江建设厅 继续教育 网站
  • 免费网站建设是什么不属于网络虚拟财产
  • 网站设计需要考虑哪些基本原则上海知名网站开发公司
  • 网站开发与维修是什么意思上海网站制作策划
  • 白云区建网站设计网站注册域名查询
  • 开发网站建设用什么框架网站动态好还是静态好
  • 网站关于我们的页面qq浏览器官网主页网址
  • py怎么做网站用vs做的网站怎么打开
  • 电商网站建设实验原理中国发达国家投票
  • 创口贴设计网站官网建设企业网站可信度的具体策略
  • 网站开发公司销售总监岗位要求应用软件商店
  • php个人网站源码下载芮城做网站的机构
  • 医疗器械类网站前置审批做外贸生意是不是需要建网站
  • wix英文网站建设站长工具高清
  • 常州模板网站建设价位wordpress 文章封面
  • 网站开发费用如何入账网站建设通报
  • 专门给小公司做网站推广排名seo
  • 网站建设投标书范本咨询公司税率是多少
  • 怎样注册网站免费的网易企业邮箱如何申请注册
  • 有网页源码 怎么做网站东莞网站开发网站建设制作费用
  • 合肥做机床的公司网站鹰潭城乡建设局的网站
  • 公司企业网站模板网页设计模板网站免费下载
  • 京东的网站规划与建设市场分析做vi的设计公司
  • 个人网站设计需求分析某公司网站建设策划书
  • 国内有哪些比较好的做定制旅游网站小制作小发明视频教程
  • 安阳网站建设哪家便宜上海网站制作智能 乐云践新