- 博客(27)
- 收藏
- 关注
原创 对c语言的一些想法
程序=数据结构+算法,平时在主函数中,会定义不同数据类型的变量,写各种算法步骤,这样会导致写的内容都是临时的。函数的形参即输入参数,如果在函数中全用代数,这个函数是具备一定功能的,里面的每一条语句就组成一个指令集。现在觉得c语言程序设计可以用于画图设计,一直没有想过。函数指针可以为计算机提供指令入口地址。
2024-06-24 07:05:07
139
原创 8.8.3void指针类型
想要将p指向别的类型的话,要进行类型转换。使用起来不太方便,经常要进行转换类型,还是习惯在定义指针的时候就写好指向的基类型。主要是库函数的内存分配相关的函数,如malloc会返回void类型的指针,将这个指针赋值给别的类型的时候,要记得类型转换。自己不进行类型转换,系统会自动转换,这种情况容易发送错误。指针的一种基类型,使指针指向空类型。最好自己进行类型转换。
2024-06-23 17:57:52
146
原创 8.7.3指针数组作main函数的形参
int main(int argc,char *argv[])或者void main(int argc,char *argv[]),argc表示参数个数,argv表示参数向量,数组中的每一个元素指向命令行中的一个字符串。编译生成test.exe文件,在命令行中调用,键盘输入test Cina Beijing,这样这个test.exe功能与系统提供的echo命令(.exe文件)功能一样,参数回送。main函数是操作系统调用的,main函数的实参在命令行中给出,在命令行中,命令名为.exe文件名。
2024-06-23 08:21:55
234
原创 8.5.4用指向函数的指针作函数参数
书上给的例8.24将函数指针作为函数fun的形参,用于接收主函数传的实参(实参为函数名funx),这样使函数调用别的函数的时候,是把别的函数名作为函数的参数进行调用,符合结构化程序设计中的模块化设计原则,体现了模块的独立性,即使用一个模块完成一项功能,耦合性少。在主函数中调用fun函数,函数fun没有改变,改变的只是实参的函数名。这样,这个函数指针体现了一种总结,概括函数的功能,为主函数提供函数入口。指向函数的指针变量的一个重要用途是把函数的地址作为参数传递到其他函数。
2024-06-22 21:42:38
226
原创 stm32DMA使用
还要配置好USART,再调用DMA_USART1_Config,传入数组及数组元素个数,再调用库函数USART_DMACmd(USART1,USART_DMAReq_Tx,ENABLE);据,存放在内部FLASH(我做的是没加const,并放在主函数中定义的,是相当于放在SRAM的数据),然后使用DMA传输把源数据拷贝到目标地址上(内部SRAM),最后。2、存储器到外设,先定义一个数据变量,存于SRAM中,然后通过DMA的方式传输到串口的数据寄存器,然后通 过串口把这些数据发送到电脑的上位机显示出来。
2024-06-16 21:29:13
259
原创 stm32学习
解决方法:在晚上可以看看第二天要学的内容,这个量不知道就给一个大概的经验量,这个量由长期的学习经验决定,这个参数可以逐渐调节至一个动态平衡。缺乏规划,会导致第二天学习的时候会到处乱看章节。规划以后的内容,那么要在当前时间做好未来的准备。一天的内容无法规划好就做半天的内容规划。短期目标:学完stm32的教程?每天的目标:学完一个章节?大目标:成为电子工程师?规划的内容应当做好记录。
2024-06-16 12:25:02
110
原创 stm32USART1串口使用
主函数中调用USART_Config();Usart_SendString(USART1,"这是一个串口中断接收回显实验\n");串给电脑,然后开发板进入中断接收等待状态,如果电脑有发送数据过来,开发板就会产生中断,编写一个程序实现开发板与电脑通信,在开发板上电时通过USART发送一串字符。我们在中断服务函数接收数据,并马上把数据返回发送给电脑。
2024-06-15 23:01:14
238
原创 stm32定时器1s配置
1、调用core_cm3.h中的static __INLINE uint32_t SysTick_Config1(uint32_t ticks),这只是个函数名,里面的内容直接从core_cm3.h复制,主函数中调用SysTick_Config1(SystemCoreClock/1000),出去转转,对中断和定时器有了一些新的想法,中断就是在程序中加塞程序,执行中断也是有判定条件的,有点想用goto语句来实现。再设置1s,则在中断服务函数中设置1000的计数,就执行自己的程序。
2024-06-13 21:32:10
620
原创 stm32外部中断EXTI0
1、void NVIC_Configuration(void)是自己定义的,还有NVIC_InitStructure是自己定义的标识符,其他 类型、函数都是库函数的,实参自选。在主函数中只需调用EXTI_Key_Config(void)函数,EXTI0_IRQHandler(void)函数不用在主函数中调用。2、void EXTI_Key_Config(void),EXTI_InitStructure是自己定义的。if语句的函数体可以自己定义,与中断相关的函数是库的,自己根据需求选择。
2024-06-12 18:11:24
229
原创 stm32时钟配置
/选中实参可以跳转至stm32f10x_rcc.h中可选择不同的参数。选择外部HSE晶振,本开发板8MHz。选择内部HSI,8MHz。这表示PLL时钟倍频因子设置为4,*8MHz,即系统时钟配置为32MHz。
2024-06-12 11:01:18
319
原创 关键字extern与static
首先,要调用别的文件的函数或者变量,需要知道变量或者函数的作用在自己写的代码的哪个范围,然后在自己要调用变量或者函数前声明。static修饰局部变量,使局部变量作为静态存储,在程序运行结束前不会释放,还会让别的代码文件无法调用该变量。extern修饰自己要调用的别的文件的全局变量或者函数,即进行声明。还可以修饰函数,则别的代码文件无法用extern声明调用。在使用include包含别的代码文件时。
2024-06-09 20:29:16
218
原创 stm32学习3 位带操作
位带区即存储器中放着寄存器的所有位,也就是已经分配好地址的有特定功能 的内存单元 区,这里1个位可以用于表示一个功能。位带别名区,这里理解成还有一块已经分配好地址的有特定功能的内存单元区,与位带区功能相同,但是它用5个位表示一个功能。
2024-06-07 11:27:45
183
原创 stm32学习2按键
GPIO_ReadInputDataBit (GPIOA,GPIO_Pin_0)==1这个函数为1,表示PA0接收到高电平,然后将1赋给a,然后判断a==1则PB0输出1,也就是亮灯,不知道为什么不亮?conf.h中包含了所有外设h文件,不需要的可以注释掉。想用PA0连接的按键控制PB0的led亮灭,
2024-06-06 10:40:21
419
原创 《stm32库开发实战指南》野火stm32霸道开发板学习1
我们可以找到每个单元的起 始地址,然后通过C语言指针的操作方式来访问这些单元,如果每次都是通过这种地址的方式 来访问,不仅不好记忆还容易出错,这时我们可以根据每个单元功能的不同,以功能为名给这个 内存单元取一个别名,这个别名就是我们经常说的寄存器,这个给已经分配好地址的有特定功能 的内存单元取别名的过程就叫寄存器映射。了解一下stm32能做的产品。
2024-06-03 18:05:32
315
原创 学习c语言程序设计时的错误
遇到看不懂的数据类型或者算法,不应该长时间花在上面,容易因小失大,应当做好标记,以后再解决。简单记忆或者跳过,解决下一个问题。
2024-06-03 07:09:30
87
原创 结构化程序设计方法
由基本结构构成的算法属于“结构化”的算法,不存在无规律的跳转,只在本基本结构内才允许存在分支和向前或向后的跳转。我的理解:跳转可以用goto 语句,方便编写程序的时候理解,然后找其规律,若没有规律,我是不用的。调用自己写的头文件的库函数时,文件开头应该有以下预处理指令#include "xxx.h",若该头文件不在当前目录中,可以在双撇号中写出文件路径,如#include "D:\file.h"基本结构不只顺序,选择,循环,只要符合基本结构4个特点都可以作为基本结构。3、结构内的每一部分都有机会被执行到。
2024-05-31 22:16:15
265
原创 最短路径算法1
今天在写最短路径算法的时候,是先一步一步用具体的值带入解步骤,然后寻找重复的部分,寻找其中不同的数字的规律,也就是这些的数据出现的关系逻辑,然后换成标识符。
2024-05-30 20:33:24
158
原创 scanf
这样,运行时首先随便输入一个字符串,回车后,可以printf字符串,然后直接结束程序,无法输入给a赋值,在设置断点后,可以发现给a赋值了一个'\n',很怪。而在scanf给字符串赋值时,想给之后的变量用scanf再赋值就会跳过这个步骤。在scanf给单个字符赋值时,目前没有发现这种情况。可以正常输入并printf。
2024-05-26 20:49:45
221
原创 循环结构与分支结构
在写循环结构的时候非常容易出错,循环结构用于重复操作,在开始操作的时候,会出现与重复操作类似的操作,这个时候会把该操作放入循环中,导致出错。所以,在开始的时候,可以把操作单独写几遍,发现完全重复的部分,再放入循环结构。分支结构if...else与if...if完全不一样,if...else为二选一,而if...if是可能执行完第一个if后又执行第二个if。
2024-05-23 16:24:30
180
原创 c语言关于文件的操作
按照第一个形参为buffer字面意思来讲,buffer是一个缓存区,那用完之后是要释放的。首先定义文件指针类型变量,用于指向文件的位置。用格式化方式文件写函数fprintf()用格式化方式文件读函数fscanf()用二进制方式向文件写函数fwrite。用二进制方式向文件读函数fread,打开文件fopen函数。关闭文件fclose。
2024-05-17 18:30:30
206
原创 做链表题的一些感受
在写一个函数功能的时候,脑子里好像没有一个框架,只能一步步做加减乘除赋值循环选择等等的摸索,然后用到一个变量,再去定义一个变量,这些变量的类型也是临时定的,然后写完函数后,根据测试结果看函数有没有问题。要修炼到写函数功能的时候,能想好框架,多少个变量,应该要很久。今天做单向链表逆置题,逆置函数中,总共定义3个结点指针变量*p,*q,*r,3个指针变量分别指向连续的3个结点,r带头,先连接q,然后q连接p,然后p向前移动到q指向的结点,然后q再移动到r,r再向前开辟,连接q,然后q连接p.....
2024-05-16 11:05:52
86
空空如也
c语言include文件相关问题
2024-06-10
不知道程序哪里出了问题
2024-05-25
TA创建的收藏夹 TA关注的收藏夹
TA关注的人