自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(8)
  • 收藏
  • 关注

原创 STM32G0系列Flash CFGBSY置位问题

STM32G0系列(我这在G030和G070能复现该问题)开始运行后,即使没有任何Flash操作,Flash外设的SR寄存器的CFGBSY位也会在你操作某个外设(可能是timer也可能是i2c等)后置位,如果不做任何处理,后续如果操作Flash擦除写入,会导致HardFault或者Flash相关Hal函数返回错误。参考网上部分网友的方案,先给Flash不使用的区域写入点儿数据,此时CFGBSY会清零,但是会导致PGAERR和PGSERR置位,之后清除这2个故障位,然后就能正常对Flash进行操作了。

2024-04-17 11:09:08 84

原创 增量式PID中的微分项为什么是e(k) - 2e(k-1)+e(k-2)

说白了就是 这次误差和上次误差的变化量 - 上次误差和上上一次误差的变化量,就是连续三次误差的变化量的变化量,而变化量的变化量就是变化率,就是微分了(积分是变化量,微分是变化率)而增量式PID算法公式中的【e(k) - 2e(k-1)+e(k-2) 这次误差-2*上次误差+上上次误差】似乎不是那么好理解。小学数学知识告诉我们这个式子能写成[e(k) - e(k-1)]-[e(k-1)-e(k-2)]其实这个东西展开就是e(k) - e(k-1)- e(k-1)+e(k-2)

2023-11-03 17:47:56 58

原创 对数组使用strstr时的主意事项

这里strstr的实际执行效果是 在数组a+b+d中找b+d,因为数组a b d在内存中大概率是连在一起的,所以strstr从数组a开始的指针往下找,找到\0(其实就是0)的时候其实查找范围已经超出了abd所在的内存范围,如果运气差点儿,abd数组后面连续很长的一段内存里一个0都没有,那么你的这个strstr就会运行很长时间,直到世界的尽头。但是在实际使用时要注意,如果引入的2个指针确实指向的是字符串,没什么问题,但是如果引入的2个指针指向的是数组,那就有问题了。如果引入的指针是指向数组的。

2023-04-21 17:03:12 238

原创 如果写入Flash前不擦除会发生什么

③第三只小耗子,耗中猛耗,走过了全部8个老鼠夹子,前4个老鼠夹子已经被触发合上了所以没动静,后4个老鼠夹子被触发后,啪啪啪啪,被触发后合上,所以第三只耗子走过后,这8个老鼠夹子变成了“合合合合合合合合”,就是00000000。④然后来了个人类,看到有老鼠夹子被触发合上了,为了下次老鼠夹子能继续抓老鼠,就把老鼠夹子掰开了,而且根据规则,是一次把所有老鼠夹子都掰开了,8个夹子就变成了“张张张张张张张张”,就是11111111,回到了最开始的状态。夹子合上变张开,bit从0变成1;

2023-04-14 15:38:43 1053 2

原创 启动文件里的heep_size的设置

这里主要针对stm32的启动文件里的heep_size众所周知这个heep_size 是堆的大小的设置,比如stm32f030的默认值是Heap_Size EQU 0x00000200就是说堆大小默认512字节,而堆的话,如果不用操作系统或者C自带的内存管理函数(malloc啊 free啊啥的),其实没多大用这样好多人包括我自己其实就想这里能不能设置成0得了,可以省出512字节RAM事实证明,没必要,编译器比我们聪明,看看MDK编译过程中产生的map文件,其中有这么一...

2021-11-17 11:29:50 710

原创 const void * 做函数参数的用法

引子最近在看sx126x的驱动程序时发现了这么个用法sx126x_status_t sx126x_set_sleep( const void* context, const sx126x_sleep_cfgs_t cfg ){ uint8_t buf[SX126X_SIZE_SET_SLEEP] = { 0 }; buf[0] = SX126X_SET_SLEEP; buf[1] = ( uint8_t ) cfg; return ( sx126x_stat

2021-11-03 09:57:54 6752 3

原创 关于MSP430的RST引脚的处理方式

前些天给MSP430G2553的小片子画了个TSSOP的转接板,方便用杜邦线连模块用。画板子的时候把所有引脚都用2.54的排针引出,想着不会出什么问题,因为N年前在用F5438的时候就是直接用LQFP100的转接板把所有引脚引出来,插上3.3V电源片子就能跑了(对于当时只用过51的我还是很震撼的,毕竟51要跑起来外面要接一大堆东西)。但是把这个G2553焊上去,连launchpad下程序后,发现程序怎么都不运行,还以为是买到便宜的假片子了。量了一圈,3.3V电源正常,RST引脚2.5V!这种半高

2021-01-27 17:25:32 1460

原创 12864 OLED屏幕 的例程永远从第1列而不是第0列开始的问题

注意,TB上卖的12864,商家会提供例程,最近发现其中一个版本的例程存在问题显示16*16点阵的字符,一行128像素,正好显示8个。但是使用商家提供的例程,当你设置从第0行0列显示,每行的字符却都是从第1列开始,而不是从第0列问题出在下面的代码中void OLED_Set_Pos(uint8_t Row,uint8_t Cal) { OLED_WR_Byte(0xB0+R...

2018-11-26 16:15:04 2153 3

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除