
C语言
zd845101500
单片机软件、硬件设计、搞机爱好者,尽量原创
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
按时序执行动作的程序
使用一个结构体描述执行的动作,使用一个数组组成动作组,通过一个定时器遍历这个动作组。原创 2024-08-26 15:54:43 · 225 阅读 · 0 评论 -
GPT4o编写步进电机控制代码
基于STM32F407 HAL库,写一个步进电机控制程序,需要控制8个步进电机,我会给出描述步进电机的结构体变量,基于这些变量需要你做出以下功能,电机脉冲通过定时器中断翻转脉冲引脚的电平实现,零点位置在最小限位和最大限位中间,运行的距离根据脉冲数而定。要能够实现多个电机同时运行动作,给我一份完整的程序,C文件和H文件,包括8路电机参数、定时器和引脚的初始化,total_steps这个变量表示电机最大能够运行的步数,在复位或者其他动作时,如果运行超过这个步数还是没有接收到限位传感器信号则立即停止电机。原创 2024-08-14 17:01:25 · 1038 阅读 · 0 评论 -
C语言排序算法
C语言排序算法原创 2023-02-15 09:26:55 · 133 阅读 · 0 评论 -
C语言标准库的常用函数
stdio.h int printf(const char *format, ...) 发送格式化输出到标准输出 stdout。 int sprintf(char *str, const char *format, ...) 发送格式化输出到str所指向的字符串。 stdlib.h double atof(const char *str) 把参数str所指向的字符串转换为一个浮点数(类型为 double 型)。 int ato...原创 2020-08-30 11:23:35 · 229 阅读 · 0 评论 -
51/stm32单片机软件调试方法与技巧
常用单片机调试方式有仿真器、串口、屏幕显示。1、仿真器仿真IAR、keil等集成开发环境配合仿真器调试程序很适合单片机优点:可设置断点、实时查看内存等缺点:要有仿真器2、串口调试相较于仿真器仿真,串口调试不需要仿真器,在某些没有或者不能使用仿真器的系统上更实用,通用性更强。一般串口输出我们会使用重定向到串口的printf函数或者自定义的串口输出函数(比如:send_de...原创 2020-01-19 14:32:38 · 5209 阅读 · 0 评论 -
C语言之预处理#define
预处理器查找一行中以#号开始的预处理指令。预处理器指令从#开始运行,到后面的第1个换行符为止。。也就是说,指令的长度仅限于一行。1、无参数宏定义的格式为:#define 标识符 替换列表2、带参数宏定义形式:#define 标识符(参数1,参数2,...,参数n) 替换列表①用宏参数创建字符串:#运算符,示例如下,#define PSQR(X) printf("The squa...原创 2019-08-22 16:24:13 · 424 阅读 · 0 评论 -
C语言之预处理第一阶段-翻译
大部分内容摘自C primer plus。预处理前先进行翻译:1、编译器把源代码中出现的字符映射到源字符集。该过程处理多字节字符和三字符序列。(不是很了解)2、编译器定位每个反斜杠后面跟着换行符的实例,并删除它们。就是说连接两行的连接符 \ ,示例如下,printf("That's wond\erful!\n");会被转换为printf("That's wond...原创 2019-08-22 15:29:05 · 260 阅读 · 0 评论 -
C语言之GCC __attribute__
__attribute__可以设置函数属性(Function Attribute)、变量属性(Variable Attribute)和类型属性(Type Attribute)。分析一下今天遇到的问题h文件中的声明如下extern struct serial_device * default_serial_console (void);c文件中的定义如下struct ...原创 2019-07-05 14:43:36 · 390 阅读 · 0 评论 -
C语言之函数指针和二重函数指针
在分析Uboot程序时发现一个函数指针的用法,花了点时间研究一下。做个记录。先说一下函数指针的基本用法。如下int init01(void){ printf("行号:%d 函数名:%s \n", __LINE__, __FUNCTION__); return 0;}typedef int (init_func1)(void); // 声明一个函数类型typedef int...原创 2019-07-04 15:03:41 · 614 阅读 · 0 评论 -
C语言之struct结构体内存分配
实验使用sizeof关键字测量结构体大小的规则查资料得到的规则如下原则1、数据成员对齐规则:结构(struct或联合union)的数据成员,第一个数据成员放在offset为0的地方,以后每个数据成员存储的起始位置要从该成员大小的整数倍开始(比如int在32位机为4字节,则要从4的整数倍地址开始存储)。原则2、结构体作为成员:如果一个结构里有某些结构体成员,则结构体成员要从其内部最大元素...原创 2019-07-04 15:02:49 · 1476 阅读 · 0 评论 -
C语言之-volatile\extern关键字
一、extern关键字定义方式 :extern int a;显式的说明了a的存储空间是在程序的其他地方分配的,在文件中其他位置或者其他文件中寻找a这个变量。在a.c文件中要引用b.c文件中的变量时,需要在a.c文件中用extern声明所用到的变量。二、volatile关键字定义方式:volatileintvint;简单地说就是防止编译器对代码进行优化。...原创 2019-07-08 16:35:03 · 768 阅读 · 0 评论 -
C语言之-static\const关键字
static意为静态的。在C语言中可用于修饰变量和函数。一、static关键字1、static修饰局部变量把局部变量改变为静态变量后是改变了它的存储方式即改变了它的生存期。不加static修饰,函数或者代码块中的变量在函数或者代码块执行完毕后就直接回收销毁了,每次执行都会重新分配内存,每次都会销毁。加 static 修饰,函数或者代码块中的变量在函数或者代码块执行第一次初始化分配内...原创 2019-07-08 16:13:37 · 226 阅读 · 0 评论