有趣的位运算
有意思的操作基本操作位运算是算法题里比较特殊的一种类型,它们利用二进制位运算的特性进行一些奇妙的优化和计算。常用的位运算符号包括:“∧” 按位异或(取不同)、“&” 按位与(取交)、“|” 按位或(取并)、“~” 取反、“<<” 算术左移和 “>>” 算术右移。
n & (n - 1) 可以去除 n 的位级表示中最低的那一位,例如对于二进制表示 11110100 ,减去 1 得到 11110011,这两个数按位与得到 11110000。
n & (-n) 可以得到 n 的位级表示中最低的那一位,例如对于二进制表示 11110100,取负得到 00001100,这两个数按位与得到 00000100。
获取二进制数中1的个数方法一123456789101112131415int bitset_contains(u32 s,int i){ if(((s>>i) & 0x01) == 1) return 1; else return 0;}int bitset_size0(u32 s) ...
STM32仿真器程序烧录
这几天捯饬了一下烧录程序的方法。主要还是SWD烧录,后续应该会尝试其他方法。我最开始的时候就不太会弄,即便手边有个仿真器也没有去用(后来就丢了😂),一直用的是ISP下载,不仅效率低,还不能在线调试。所以就整理了一下烧录方法。
STM32仿真器程序烧录SWD烧录SWD烧录是一种串行调试接口,出去供电与共地只需要两根线即可烧录调试
SWDIO: 串行数据线,用于数据的读出和写入;
SWDCLK: 串行时钟线,提供所需要的时钟信号;
下面是官方手册里烧录接口的引脚到GPIO口的映射关系
这个是标准的接口排列,要注意的是按照插座边上的缺口向左的方向来查看。
一般情况下大多数单片机的 JTAG 接口和 SWDIO 接口是复用的,下面就是MINI板的原理图
J-link这个是比较常见也比较便宜的一款J-link,只有3.3vVCC、SWDIO、SWCLK、GND四根线,接线方式也十分的简单 。
像STM32C8T6、openCRP等等已经给出这四个接口的板子直接接上就好了
如果是20脚标准接口的话对照上面的图片找到对应的引脚直接接上即可。
如果实在找不到接口 ...
ROS串口通讯
简单记录了尝试使用ROS与STM32通讯的过程,包括踩的一点坑,其中一些低级问题实在是有点让人哭笑不得😂
ROS串口通讯ROS串口通讯配置Ubuntu20.04手动获取Serial包linux/ros 串口权限获取转载自(9条消息) Linux/ROS——获取串口权限_不懂音乐的欣赏者的博客-CSDN博客
我这里的串口号是/dev/ttyTHS1,需要适当变动
永久解决串口权限问题(我试了一下,但是失败了)
创建ttyUSB权限规则文件etc/udev/rules.d/70-ttyUSB.rules
1$ sudo vim -p /etc/udev/rules.d/70-ttyUSB.rules
在70-ttyUSB.rules文件中写入下列代码
KERNEL==”ttyUSB*”, OWNER=”root”, GROUP=”root”, MODE=”0666”保存即可,重启或注销用户在登录后生效
临时获取串口权限先查看插入电脑的串口号
1ls /dev/ | grep ttyUSB
知道串口号之后对指定串口赋予权限,以ttyUSB0为例
1sudo chmod a+rw ...