怎么使用C++写中断与事件
发表于:2025-01-23 作者:千家信息网编辑
千家信息网最后更新 2025年01月23日,这篇文章主要讲解了"怎么使用C++写中断与事件",文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习"怎么使用C++写中断与事件"吧!一般情况下,使用面向对象的
千家信息网最后更新 2025年01月23日怎么使用C++写中断与事件
这篇文章主要讲解了"怎么使用C++写中断与事件",文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习"怎么使用C++写中断与事件"吧!
一般情况下,使用面向对象的语言时,对于一些概念自然就会想到封装,而封装后的类库其可移植性会更方便。而ISR函数具有一些特殊性不能简单地在C++中定义。
1. 在不改动启动代码的情况下:
如果不想改动启动代码,则中断函数不能直接在c++代码中定义,需要使用GCC提供的语言扩展asm("中断函数名"),例如:
class Interrupt {/** * External Interrupt Request 0 */static inline void INT0_IRQHandler() asm("__vector_1");// 其他中断...}
然后就可以在cpp文件中定义:void Interrupt::INT0_IRQHandler() { /代码/}
2. 自己写启动代码,这个就比较NB了,一般情况下,有的厂商会提供C的启动代码,可以参考其改写为C++的代码。除了编写数据初始化和BSS初始化等相关函数代码后,最主要的工作就是定义中断向量了,有两种风格的中断向量:
2-1. 带跳转语句的中断向量,例如AVR,其定义形式如下:
typedef void ISR(void);struct ISR_Type { uint8_t code[2]; ISR* isr;};__attribute__((section(".isr_vectors"))) static const vectors[] = { {{0x0C,0x94}, Interrupt::Reset}, {{0x0C,0x94}, Interrupt::INT0_IRQHandler}, /*其他的中断向量*/};
2-2. 地址形式的中断向量,ARM系列
__attribute__((section(".isr_vector"), used))static IRQ_Handler* isrVector[] { _estack, reset, it::NMI_Handler, /*其他的函数*/}
3. 将ISR定义在在H文件中(不包括使用asm()指令的中断函数),这样可以增加编译速度哦,但是需要在每个函数前面加inline。
感谢各位的阅读,以上就是"怎么使用C++写中断与事件"的内容了,经过本文的学习后,相信大家对怎么使用C++写中断与事件这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是,小编将为大家推送更多相关知识点的文章,欢迎关注!
代码
函数
C++
向量
事件
情况
学习
内容
就是
形式
文件
语言
封装
特殊
厂商
厂商会
地址
对象
思路
指令
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
excel服务器是什么
服务器神游中
怎么从查询保存数据库表
联通互联网服务器有什么用
云数据库升级中退款了怎么办
华为软件开发用mac吗
魅族 打印服务器
信息网络安全的现状分析
叮当软件开发平台
山东天翼互联网科技有限公司
嵌入式软件开发有哪几方面
安卓软件开发的内容
显示mysql数据库字符类型
武汉万通光电网络技术
公益漫画网络安全
数据库 离散数学
广州手机软件开发需要多少钱
拼团软件开发男t恤
小班网络安全教育情景
上海软件开发代理品牌
软件开发工程师考什么大学
无纸化会议文件管理服务器
医院设计数据库的单位
微信数据库400m多
吴瀚清讲网络安全
湖南省安卓软件开发培训班
小班网络安全教育情景
关系型数据库是最好的吗
系统显示服务器状态异常
干警对网络安全的认识不到位