![](https://img-blog.csdnimg.cn/20201014180756916.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
C语言
余府
热爱汽车,为了改变中国及世界而奉献
展开
-
汇编语言中b和bl关键字的区别
汇编语言中b和bl关键字的区别原创 2022-07-30 17:28:24 · 2687 阅读 · 1 评论 -
DMA直接存储器存储方式是什么?
在计算机与外设交换数据的过程中,无论是无条件传送、利用查询方式传送还是利用中断方式传送,都需要由CPU通过执行程序来实现,这就限制了数据的传送速度直接内存存储(Direct Memory Access,DMA)是指数据在内存与I/O设备间的直接成块传送,即在内存与I/O设备间传送一个数据块的过程中,不需要CPU的任何干涉,只需要CPU在过程开始启动(即向设备发出“传送一块数据”的命令)与过程结束(CPU通过轮询或中断得知过程是否结束和下次操作是否准备就绪)时的处理,实际操作由DMA硬件直接执行完成,CP.原创 2022-03-07 23:54:08 · 1310 阅读 · 0 评论 -
8080并口协议及写数据程序
1.8080并口的信号线:CS:片选信号WR:写入数据RD: 读取数据D[7:0]:8位双向数据线RST:硬复位DC:命令/数据标志(0,读写命令;1,读写数据)2.读写时序写时序:读时序8080并口时序读写过程:先将读写的数据类型DC设置为高(数据)/低(命令),然后拉低片选,选中对应的设备,然后将写数据还是读数据WR/RD拉低。读数据:在RD的上升沿、读取数据线上的数据。写数据:在WR的上升沿、使数据写入设备中。3.写数据程序void 8080_Write_Byte原创 2021-05-14 21:58:27 · 2155 阅读 · 4 评论 -
成功解决:MDK5逻辑分析窗口Unknown signal的问题
在MDK5中的逻辑分析窗口输入GPIO口时,出现Unknown signal的问题这种情况是Debug的设置不正确导致的,点击Options for Target选中Debug选项,Dialog DLL及其Parameter选项设置不正确,这里设置为DCM.DLL和-pCM3到Device选项查看芯片类型,我使用的设备是STM32F103ZE系列芯片到Debug选项,根据自己的设备修改Dialog DLL及其Parameter选项,改成DARMSTM.DLL和-pSTM32F103ZE随原创 2021-05-06 17:15:29 · 9198 阅读 · 21 评论 -
<stdarg.h>中va_start、va_arg和va_end的用法
函数声明如下:void va_start(va_list ap, last_arg);type va_arg(va_list ap, type);void va_end(va_list ap);参数:ap – 这是一个 va_list 类型的对象,它用来存储通过 va_arg 获取额外参数时所必需的信息。last_arg – 最后一个传递给函数的已知的固定参数。type – 这是一个类型名称。该类型名称是作为扩展自该宏的表达式的类型来使用的。在变参数的函数中,va_arg负责返回函数的原创 2021-05-01 10:33:14 · 384 阅读 · 2 评论 -
冒泡、选择、插入排、希尔、归并、快速排序算法的C语言实现
冒泡排序(Bubble Sort),是一种计算机科学领域的较简单的排序算法。它重复地走访过要排序的元素列,依次比较两个相邻的元素,如果顺序(如从大到小、首字母从Z到A)错误就把他们交换过来。走访元素的工作是重复地进行直到没有相邻元素需要交换,也就是说该元素列已经排序完成。这个算法的名字由来是因为越小的元素会经由交换慢慢“浮”到数列的顶端(升序或降序排列),就如同碳酸饮料中二氧化碳的气泡最终会上浮到顶端一样,故名“冒泡排序”。冒泡排序算法的C语言实现代码如下:#include <stdio.h原创 2021-04-22 10:32:05 · 396 阅读 · 0 评论 -
成功解决:MDK5编辑器中文乱码问题 以及设置漂亮的代码字体
点击菜单栏的Edit→configuration1.设置编辑器的编码方式(可选GB2312或UTF-8),解决乱码问题2.设置编辑器字体,选择自己喜欢的字体我觉得Source Code Pro就非常好看,效果如图欢迎小伙伴讨论,文章内容如有错误请在评论区评论或发私聊消息,谢谢你。...原创 2021-04-04 10:24:47 · 4435 阅读 · 10 评论 -
C语言判断是否为闰年的代码
#include <stdio.h>int main() { int year, leap; //year年份 leap是否为闰年 printf("Please enter year:"); scanf_s("%d", &year); if ((year % 4 == 0 && year % 100 != 0) || year % 400 == 0) //如果年份能被4整除且不能被100整除,或者直接能被400整除,则为闰年 leap = 1; /原创 2020-11-15 22:55:50 · 19476 阅读 · 3 评论 -
C语言求解一元二次方程组的代码
#include <stdio.h>#include <math.h>int main() { double a, b, c, deta, x1, x2, p, q; scanf_s("%lf%lf%lf", &a, &b, &c); deta = b * b - 4 * a * c; p = -b / (2 * a); q = sqrt(deta) / (2 * a); x1 = p + q; x2 = p - q; printf("原创 2020-11-13 18:59:22 · 4114 阅读 · 0 评论 -
C语言求次方代码
使用pow库函数求2的10次方#include <stdio.h>#include <math.h>int main() { double a = pow(2, 10); printf("%lf",a); return 0;}使用C编译器运行程序只需更换pow函数中的参数即可求其他结果_Check_return_ double __cdecl pow(_In_ double _X, _In_ double _Y);欢迎小伙伴讨论,如有错误请在评论区评论原创 2020-11-13 18:41:53 · 4010 阅读 · 2 评论 -
C语言的转义字符及其作用
C中定义了一些字母前加""来表示常见的那些不能显示的ASCII字符,如\0,\t,\n等,就称为转义字符。转义字符字符值输出结果\\ 字符输出此字符’’ 字符具有此八进制码的字符"" 字符输出此字符?? 字符输出此字符\a警报铃声产生声音或视觉信号\b退格键将当前位置后退一个字符\f换页符将当前位置移到下一页的开头\n换行符将当前位置移到下一行的开头\r回车将当前位置移到本行的开头\t水平制表原创 2020-10-31 12:31:03 · 1781 阅读 · 2 评论 -
C语言现行标准C11的新特性
C11标准是 ISO/IEC 9899:2011 - Information technology – Programming languages – C 的简称,曾用名为C1X。C11标准是C语言标准的第三版,前一个标准版本是C99标准。2011年12月8日,国际标准化组织(ISO)和国际电工委员会(IEC) 旗下的C语言标准委员会(ISO/IEC JTC1/SC22/WG14)正式发布了C11标准。C11标准的最终定稿的草案是免费开放的,为N1570 [3] ,但是正式标准文件需要198瑞士法郎。原创 2020-10-31 11:55:10 · 3765 阅读 · 0 评论 -
C语言中一个数乘以256的最快的方法
位运算是计算机运算最本质的,所以运算速度相对较快int mul256(int a){return a << 8;}代码中将形参a左移8个位,相当于乘2的8次方,也就是将a乘以256欢迎小伙伴讨论,如有错误请在评论区评论或发私聊消息,谢谢你。...原创 2020-10-27 10:17:03 · 1606 阅读 · 1 评论 -
成功解决:LNK1168 无法打开 D:\Microsoft Visual Studio\2019\project\test\Debug\test.exe 进行写入
在Visual Studio中运行test.c程序时报错错误 LNK1168 无法打开 D:\Microsoft Visual Studio\2019\project\test\Debug\test.exe 进行写入解决方案:到D:\Microsoft Visual Studio\2019\project\test\Debug\test.exe中删除debug文件夹并重新运行程序成功解决:LNK1168 无法打开 D:\Microsoft Visual Studio\2019\project\te原创 2020-10-26 22:49:17 · 2871 阅读 · 7 评论 -
C语言关键字
C语言的关键字不可作常量名、变量名或其他标识符名称。关键字说明auto声明自动变量break跳出当前循环case开关语句分支char声明字符型变量或函数返回值类型const定义常量,如果一个变量被 const 修饰,那么它的值就不能再被改变continue结束当前循环,开始下一轮循环default开关语句中的"其它"分支do循环语句的循环体double声明双精度浮点型变量或函数返回值类型else条件语句否定分支(原创 2020-10-26 21:39:25 · 3147 阅读 · 0 评论 -
I2C总线通讯协议
I2C总线通讯协议1. I2C总线简介I2C是Inter-Integrated Circuit的简称,读作:I-squared-C。由飞利浦公司于1980年代提出,为了让主板、嵌入式系统或手机用以连接低速周边外部设备而发展。主要用途:SOC和周边外设间的通信(如:EEPROM,电容触摸芯片,各种Sensor等)。1.1物理接口I2C总线只使用两条双向漏极开路的信号线(串行数据线:SDA,及串行时钟线:SCL),并利用电阻上拉。I2C总线仅仅使用SCL、SDA两根信号线,就实现了设备间的数据交互,转载 2020-10-26 17:17:17 · 775 阅读 · 0 评论 -
成功解决:‘scanf‘: This function or variable may be unsafe. Consider using scanf_s instead
运行C程序时报错:错误 C4996 'scanf': This function or variable may be unsafe. Consider using scanf_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details.原代码:scanf(" %c", &c);将scanf换成scanf_s后调试程序scanf_s(" %c", &c);原创 2020-10-26 10:46:31 · 11661 阅读 · 2 评论 -
C语言编译流程
C语言程序从源代码到二进制行程序都经历了那些过程?本文以Linux下C语言的编译过程为例,讲解C语言程序的编译过程。编写hello world C程序:// hello.c#include <stdio.h>int main(){ printf("hello world!\n");}编译过程只需:gcc hello.c # 编译./a.out # 执行便可输出hello world!这个过程如此熟悉,以至于大家觉得编译事件很简单的事。事实真的如此吗?我们来细看一下转载 2020-10-23 12:34:41 · 277 阅读 · 2 评论 -
成功解决Keil MDK5中no browse information available in ‘xxx’的问题
使用MDK5的Go To Definition of ''功能的时候,报错no browse information available in 'xxx'如图所示:解决方案:点击Option for target→Output,勾选Browse Information重新编译程序再次执行Go To Definition of ''的操作发现已成功定位至定义处成功解决Keil MDK5中no browse information available in ‘xxx’的问题欢迎小伙伴原创 2020-10-23 11:58:03 · 23692 阅读 · 32 评论 -
MDK5 JLINK配置流程
首先用JLINK连接电路板打开一个项目并编译项目点击Option for target→Debug,选择J-LINK / J-TRACE Contex,勾选Run to main()点击Setting,在Debug菜单中选择最大频率10MHz在Flash Download菜单中选择Program、Verify、Reset and Run,然后点击Add添加芯片的支持包选择型号和Flash Size相符合的选项,点击Add后点击确定在Option for target→Utilities原创 2020-10-19 12:28:29 · 17193 阅读 · 9 评论 -
成功解决 MDK5中No ST-LINK detected的问题
是用Keil MDK5下载程序时报错:No ST-LINK detected到设备管理器看一看安装ST-LINK驱动: 提取码:qgkm点击Download再次下载程序显示程序下载成功成功解决MDK5中No ST-LINK detected的问题原创 2020-10-17 10:16:22 · 51994 阅读 · 20 评论 -
MDK5在线仿真Debug工具条常用按钮功能解析
MDK5在线仿真Debug工具条常用按钮名称如图所示:复位:其功能等同于硬件上按复位按钮。相当于实现了一次硬复位。按下该按钮之后,代码会重新从头开始执行。执行到断点处: 该按钮用来快速执行到断点处, 有时候你并不需要观看每步是怎么执行的,而是想快速的执行到程序的某个地方看结果,这个按钮就可以实现这样的功能,前提是你在查看的地方设置了断点。停止运行:此按钮在程序一直执行的时候会变为有效,通过按该按钮,就可以使程序停止下来,进入到单步调试状态。执行进去:该按钮用来实现执行到某个函数里面去的功能,在没原创 2020-10-18 15:38:44 · 2505 阅读 · 2 评论