踩坑日记20251124

news/2025/11/24 22:09:22/文章来源:https://www.cnblogs.com/xzaxs/p/19265991

踩坑日记20251124

1.51单片机C语言

typedef union {uint8_t Byte;  // 整体访问8位struct {uint8_t B0  : 1;  // 位域访问每一位uint8_t B1  : 1;uint8_t B2  : 1;uint8_t B3  : 1;uint8_t B4  : 1;uint8_t B5  : 1;uint8_t B6  : 1;uint8_t B7  : 1;} Bits;
} ByteType;
#define bb0 Bits.B0
#define bb1 Bits.B1
#define bb2 Bits.B2
#define bb3 Bits.B3
#define bb4 Bits.B4
#define bb5 Bits.B5
#define bb6 Bits.B6
#define bb7 Bits.B7
#define bb8 Bits.B8ByteType Uart1Tmp;
ByteType DataTmp;
#define Uart1Data Uart1Tmp.Byte
#define MoDeFlag1 DataTmp.bb0
#define MoDeFlag2 DataTmp.bb1
#define MoDeFlag3 DataTmp.bb2
#define MoDeFlag4 DataTmp.bb3Uart1Tmp = 0;
Uart1Data = MoDeFlag1<<4;
Uart1Data + = MoDeFlag3*3+MoDeFlag2*2+MoDeFlag1;//与下面这种写法有何不同
Uart1Tmp = 0;
Uart1Data = MoDeFlag1<<4+MoDeFlag3*3+MoDeFlag2*2+MoDeFlag1;
  1. 位域存储顺序:51 单片机的编译器(如 Keil C51)中,位域默认按「低地址到高地址」分配,即 DataTmp.bb0 是 DataTmp.Byte 的 最低位(bit0)bb1 是 bit1,bb2 是 bit2,bb3 是 bit3(符合你的定义预期)。不同编译器(如 Keil C51、SDCC)的位域存储顺序可能不同(部分编译器会按「高 bit 到低 bit」分配),建议在实际使用前用调试器验证。
  2. 运算符优先级:C 语言中 + 的优先级 高于 <<(移位运算符),这是导致差异的核心原因。
  3. 提升优先级使用小括号,Uart1Data = (MoDeFlag1<<4)+MoDeFlag3*3+MoDeFlag2*2+MoDeFlag1;

2.STM32单片机Hal库

  • 在使用这个宏定义时__HAL_TIM_SET_CAPTUREPOLARITY(htim, TIM_CHANNEL_3, TIM_INPUTCHANNELPOLARITY_RISING);
  • 报错如下问题:Expected ':'clang(expected) Expected expressionclang(expected_expression) macro __HAL_TIM_SET_CAPTUREPOLARITY provided by "stm32f1xx_hal_tim.h" #define __HAL_TIM_SET_CAPTUREPOLARITY(__HANDLE__, __CHANNEL__, __POLARITY__) \ do { \ TIM_RESET_CAPTUREPOLARITY((__HANDLE__), (__CHANNEL__)); \ TIM_SET_CAPTUREPOLARITY((__HANDLE__), (__CHANNEL__), (__POLARITY__)); \ } while (0)
#define __HAL_TIM_SET_CAPTUREPOLARITY(__HANDLE__, __CHANNEL__, __POLARITY__)    \
  do{                                                                     \
    TIM_RESET_CAPTUREPOLARITY((__HANDLE__), (__CHANNEL__));               \
    TIM_SET_CAPTUREPOLARITY((__HANDLE__), (__CHANNEL__), (__POLARITY__)); \
  }while(0)
  • 跳转到这个宏时__HAL_TIM_SET_CAPTUREPOLARITY也没有发现问题,后来发现是宏定义里面的函数有问题。TIM_RESET_CAPTUREPOLARITY这个函数有问题,多了一个括号,还好上网查了一下,问了半天AI说没问题。
  • 搁这里躲着呢,太离谱了。
    Pasted image 20251124220456

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/975343.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

2025年度楼梯厂商推荐榜单与选择指南:一份基于行业专业数据的权威分析报告,整木/实木/原木等材质楼梯十大主流供应商解析

随着人们对家居生活品质要求的不断提升,楼梯行业迎来了快速发展的机遇。本榜单基于产品品质、设计创新、服务体系、行业影响力四大维度,结合行业权威数据及消费者反馈,对2025年十大楼梯品牌的综合实力进行深度解析,…

Consciousness Preservation and Synthetic Life

people know AI just can not propose questions. so this is the question. bios, βίος, life, because synthesis concept is various. F is synthesis. so the analytical question is consciousness preservat…

详细介绍:Nginx 高效动静分离:从原理到实战

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

2025美国留学中介实测榜单:从藤校到小众专业,核心竞争力深度对比!

2025美国留学中介实测榜单:从藤校到小众专业,核心竞争力深度对比!美国凭借顶尖的教育资源、灵活的培养体系及广阔的发展空间,始终是全球留学生的首选目的地之一。但美国高校申请涉及“整体评估”录取逻辑、复杂的文…

2025美国留学机构TOP榜:从申请到就业的全链条护航者

2025美国留学机构TOP榜:从申请到就业的全链条护航者美国凭借顶尖的教育资源、多元的文化环境及广阔的职业发展空间,始终是全球学子留学的首选目的地。但其高校申请体系复杂,藤校及TOP30名校竞争白热化,签证政策动态…

MySQL 数据备份 - 教程

MySQL 数据备份 - 教程pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", &quo…

复制 deepseek think 思考 内容 的方法

复制 deepseek think 思考 内容 的方法 框选,复制,然后直接ctrl+v粘贴到博客园的输入框中就ok了我们之前讨论的是EHCI控制器和USB通信的细节。现在问题聚焦在qTD与管道的关系上。在USB术语中,管道(Pipe)是对应于一个…

狂神说Java(基础版)

记录下java基础的学习创建项目 首先创建一个空项目 命名注意不能有中文但是一个空项目里面我们右键连新的类都不能创建于是我们就要新建一个模块(Moudle)选中java然后一路next,记得命名创建完成之后就可以看到我们熟…

2025优质留学中介全景推荐:从藤校OFFER到职业落地,谁是你的专属引路人?

2025优质留学中介全景推荐:从藤校OFFER到职业落地,谁是你的专属引路人?在全球化教育趋势下,留学申请早已不是单一的材料递交,而是涵盖院校定位、背景提升、文书打磨、签证办理及后续发展的系统工程。专业的留学中…

第一章语法基础__C++

第一章语法基础__C++$(".postTitle2").removeClass("postTitle2").addClass("singleposttitle");一、基础语法 1、第一个程序(HelloWorld)点击查看代码 #include <bits/stdc++.h&g…

11月 月度检测 总结

菜菜菜。 比赛 rk2。嗯对所以为什么 H 没有调出来为什么。 A - ASCII Art Contest 这个简直纯红题了吧,输入三个数塞进数组,从小到大排序,然后看差值,找中位数,做完了。 B - Dungeon Equilibrium 统计每种数字的出…

zhengrui 喵了个喵

首先显然缩成一段段的,发现长度 \(\ge 2\) 的和 \(= 2\) 没区别,可以转化一下,然后就是不难发现每次会删去一个段。 那么将操作变成如下:你现在有一些 \(1, 2\) 交错的段,你可以每次删除一个段,然后将左右两端合…

黄仁勋GTC华盛顿主题演讲:加速计算与AI的下一个“阿波罗时刻” - 实践

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

Trick——语法

part1 经常在表示 \(2^n\) 时使用 \((1<<n)\)。 但不幸的是,它在 \(long long\) 范围会溢出! 难道只能手写快速幂了吗? 不,改成 \((1ll<<n)\) 就行了。

人工智能 —— 教培 —— 技校 —— 授课内容

人工智能 —— 教培 —— 技校 —— 授课内容发现了一个神奇的资源: https://github.com/AccumulateMorepython 基础(教培内容) https://github.com/AccumulateMore/Python本博客是博主个人学习时的一些记录,不保证…

老鼠和奶酪 记忆化搜索

记忆化dp的特征很明显(之前递推学过的记忆化就派上用处) 如果超时就用这个方法改进吧 重要的是我们dp[][]从这个点出发可以吃到的最多奶酪 int mm=g[x][y]; mm=max(mm,g[x][y]+dfs(nx,ny));//没走和走了 出发的概念就…

深入解析:数独解题算法lua脚本

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

老鼠和奶酪 关于修改地图我找到了不可行之处

不能修改的地图的在于我们用到地图的值的乖乖用visited!!! 在if句子出错但是检查不出来 #include <bits/stdc++.h> using namespace std; int dx[4]={1,-1,0,0}; int dy[4]={0,0,1,-1}; int g[105][105]; int n,…

Hanoi和全排列

hanoi #include <bits/stdc++.h> using namespace std; void hanoi(int n,char f,char a,char t) {if(n==1) {printf("Move disk %d from %c to %c\n",n,f,t);return;//要写 }hanoi(n-1,f,t,a);printf…

2025.11.24 周作业 45 速通

A. CF2163C 好像有 \(O(n)\) 做法。 但是我写了高贵的 \(O(n \log^2 n)\),对于每个左端点去确定右端点的取值范围,二分套二分。 B. CF1849C 考虑把操作区间扩展到极长有序区间,map 做完了。 C. CF2147D 注意力题,但…