- 博客(15)
- 收藏
- 关注
原创 STM32状态机+定时器中断+按键单双击长按判断-移植非常方便
提前说明,状态机的部分状态转移源于江协科技的按键状态机,特此声明。因为在使用江的状态机时发现无法成功判定双击,因此自己改善了一下,并且集成了实例,方便使用者移植。
2025-04-15 00:21:27
1129
原创 void指针
void 指针是一种特殊的指针,表示为“无类型指针”,在 ANSI C 中使用它来代替“char*”作为通用指针的类型。由于 void 指针没有特定的类型,因此它可以指向任何类型的数据。要将 void 指针赋值给其他类型的指针,必须进行强制类型转换。void*型的指针数组的成员可以是任意类型的指针,但是在使用这些成员时需要强制转换回来。
2025-03-31 20:50:00
226
原创 C语言共用体
共用体和结构体的区别:公用体中所有的成员公用一块地址空间,即联合体只存放一个被选中的成员,内存空间是最长成员占用的空间,需要进行字节对齐。结构体所有成员占用空间是累加的,其所有成员都存在,不同成员会存在不同的地址,内存空间等于所有成员占用的空间之和,同样需要字节对齐。在这里,我们可以看到共用体的 i 和 f 成员的值有损坏,因为最后赋给变量的值占用了内存位置,这也是 str 成员能够完好输出的原因。1、union中可以定义多个成员,union的大小由最大的成员的大小决定。为了访问共用体的成员,我们使用。
2024-11-10 21:49:44
352
原创 字符数组和字符指针的区别
原因分析:四个都是存储的常量字符串,而常量字符串在内存中只会存储一份;s1 和 s2 是字符型的数组,数组名指向本身内存块的首元素地址;而 s3 和 s4 是字符型的指针,指针名指向的是同一块内存的地址。
2024-11-10 21:47:05
261
原创 scanf和gets混用会出现的问题
这关键就在于二者使用的结束标记不同。输入字符串时,scanf()遇到空格、回车、Tab结束,但在缓冲区中还留着这些结束符,此后如果使用gets()想去获取下一行字符串,它碰到的却是前面遗留下来的回车(或者回车之前还有空格等空白符),那么这次gets()就直接失效了。如果在scanf后用gets需要注意一点,gets是遇到’\n’直接返回,而输入scanf后回车会将’\n’留在输入缓存里,而gets正好遇到’\n’就直接返回了,所以你没有机会输入。
2024-11-10 21:45:51
250
原创 #和##的用法:
打印出:The value of a is 10 和 The value of b is 5.500000。可见,#可以把一个宏参数转换成相应的字符串,如#X --> "X"可见,##是将前后两个符号连接起来。
2024-11-10 21:28:26
279
原创 scanf和gets混用会出现的问题
这关键就在于二者使用的结束标记不同。输入字符串时,scanf()遇到空格、回车、Tab结束,但在缓冲区中还留着这些结束符,此后如果使用gets()想去获取下一行字符串,它碰到的却是前面遗留下来的回车(或者回车之前还有空格等空白符),那么这次gets()就直接失效了。如果在scanf后用gets需要注意一点,gets是遇到’\n’直接返回,而输入scanf后回车会将’\n’留在输入缓存里,而gets正好遇到’\n’就直接返回了,所以你没有机会输入。
2024-11-10 21:25:21
400
原创 STM32 TIM
TIM(Timer)定时器。定时器可以对输入的时钟进行计数,并在计数值达到设定值时触发中断。16位计数器、16位预分频器、16位自动重装寄存器的时基单元,在72MHz计数时钟下可以实现最大59.65s的定时,并且支持定时器级联,实现计时指数增长。不仅具备基本的定时中断功能,而且还包含内外时钟源选择、输入捕获、输出比较、编码器接口、主从触发模式等多种功能。根据复杂度和应用场景分为了高级定时器、通用定时器、基本定时器三种类型,。
2024-11-09 17:45:45
1475
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅