学习stm32过程中遇到的问题(还有部分是Altium Designer)

问题:在注释遇到意外的文件结束

注意事项:很多带“_s”后缀的函数是为了让原版函数更安全,传入一个和参数有关的大小值,避免引用到不存在的元素,有时黑客可以利用原版的不安全性黑掉系统。比如:char d[20];写成scanf_s("%s",d,20);才是正确的,有这个参数20使准确性提高。

Altium Designer 中在PCB环境下怎么一次性修改元件标号字体大小?

同时按shift+f键----出现十字架后---点击你要改变的元件---出现对话框------把component comment-后的ANY改为same点击确定----出现PCB inspector后找到Text Hight和Text Wideth 直接更改后面值的大小即可

altium designer怎么调节原理图和pcb纸张大小

原理图:单击右键——options——document options——standard styles中选E,E是最大的,不过打印的时候没有E大小的纸张,C纸张倒是可以打印的

PCB:在英文状态下按数字1(带感叹号的那个)——Design——Redefine Board Shape——屏幕变绿——用鼠标画出你要的大小——按数字键2退出

PCB设计规则的导入导出

https://jingyan.baidu.com/article/8cdccae9bc9a65315413cde2.html

首页

在Altium Designer软件中怎样隐藏电气连接线

在Altium Designer中画PCB时隐藏电气连接线可以让整体布局显得不是那么的杂乱无章,在一定程度上方便布线,具体方法如下:
1)使用快捷键 L 调出视图设置窗口;
2)找到右侧System Colors 一栏;
3)找到Default Color For New Nets,将后面的勾去掉。
确定后电气连接线就会隐藏,如果想取消隐藏请按照同样的顺序勾选就可以了。
分享Altium PCB布局时快速摆放元件的技巧

http://www.openedv.com/posts/list/45238.htm

Keil.STM32F1xx_DFP.1.0.5 Cannot copy PDSC file to ".Download"folder的解决之道

http://www.keil.com/dd2/Pack/eula-container

http://www.keil.com/dd2/Pack/#/eula-container

http://www.openedv.com/forum.php?mod=viewthread&tid=102469

Keil_v5的安装盘的安全属性改为完全控制,在安装就可以了。

 

Opencv

https://zhuanlan.zhihu.com/p/32473762

https://zhuanlan.zhihu.com/p/35316731

FCARM - Output Name not specified, please check 'Options for Target - Utilities'解决方法

没有指定输出名称,请检查“选择目标域

FCARM,是个打包程序,把各种不是.c文件但内含c程序的东西转成.c文件,正常是用不到的,所以一般项目的编译器都未设置它的输出,所以意外使用,它就报错. RL-ARM的指导手册HTTP那一章,有讲FCARM工具的用法 

看看添加的lib文件是不是 lib后缀名,或者说编译器是否把它识别为lib文件,

往项目管理器添加文件的时候,文件类型是不是手滑 选成了Image file,然后刚好 你要的文件又显示了出来?

//仔细查看添加的文件,在property中应该是把C source file添加为image file(镜像文件)了

(下拉.c, 选择.s 一类的即可)

 

在C语言中为什么很多被调函数之前要加void?

一个函数如果这样定义:f(int x)这说明没定义返回值,默认是可以返回int的,当然,如果f函数中没有return语句,那么会返回一个乱七八糟的整数,这样不利于编译器识别错误,比如说你有这样一个语句a=f(1)编译器就识别不出来错误的,仍然认为你是对的
但如果你写成void f(int x)那么就告诉编译器这个函数禁止有返回值,那么你写a=f(1)的时候编译器就知道这是错的,然后提示你
因此,没有返回值的函数要用void,这是好的习惯(虽然不用也不出错)

 

用keil4编译提示 warning: #1-D: last line of file ends without a new

最后一行回车后还要保证是在第一列,新一行不能有空格等空字符才能不出此警告

STM32程序中,vu32 n=2000000;

volatile unsigned long n = 2000000;
使用volatile声明变量值的时候,系统总是重新从它所在的内存读取数据,即使它前面的指令刚刚从该处读取过数据。精确地说就是,遇到这个关键字声明的变量,编译器对访问该变量的代码就不再进行优化,从而可以提供对特殊地址的稳定访问;

XXX.axf: Error: L6218E: Undefined symbol xxx (referred from xxxx.o)

MKD 报错:

  linking...
LCD.axf: Error: L6218E: Undefined symbol EnZK (referred from ht128x64.o).
LCD.axf: Error: L6218E: Undefined symbol GetFlashCnBuf (referred from ht128x64.o).

 

解析:Undefined symbol EnZK,翻译过来就是:EnZK 这个符号没有定义,随后的小括号告诉你了,是在 ht128x64.o 这个文件里面被提及的,这个.o文件在工程里面并没有,它是一个在编译的时候根据.c/.s文件生成的。所以我们只需要找到工程里面的.s或者.c即可,这里对应这个名字的就是 ht128x64.c 了。

因为ht128x64.c文件中调用了EnZK没有定义,解决办法:(1)在外部.c文件中定义EnZK;

  (2) 把ht128x64.c文件中关于EnZK的部分注释掉;

 

同理:引用自http://blog.sina.com.cn/s/blog_4d1854230101a0q0.html

led_blink.axf: Error: L6218E: Undefined symbol SystemInit (referred from startup_stm32f0xx.o).


 

     此问题错误提示已经十分清楚的告诉你错在哪里了,Undefined symbol SystemInit ,翻译过来就是:SystemInit 这个符号没有定义,随后的小括号告诉你了,是在 startup_stm32f0xx.o 这个文件里面被提及的,这个.o文件在工程里面并没有,它是一个在编译的时候根据.c/.s文件生成的。所以我们只需要找到工程里面的.s或者.c即可,这里对应这个名字的就是 startup_stm32f0xx.s了。


 

   在此文件里面可以找到SystemInit的所在:

Reset_Handler    PROC

                 EXPORT  Reset_Handler             [WEAK]

     IMPORT  __main

     IMPORT  SystemInit

                 LDR     R0, =SystemInit

                 BLX     R0

                 LDR     R0, =__main

                 BX      R0

                 ENDP

   原来在复位中断服务函数里面,调用了SystemInit这个函数,而这个函数在.s文件里面没有定义。

   所以解决的办法有两个。

   1,在外部(其他任何.c文件里面)定义SystemInit这个函数,哪怕是个空函数也可以。

   2,把   

           IMPORT  SystemInit              

                 LDR     R0, =SystemInit

                 BLX     R0

      这三句话注释掉。

SystemInit 是在使用main前做一些初始化工作,如果不需要官方的库,只是自己编写一些简单的应用,则可以把此函数禁掉。譬如创建工程时直接加入s文件,剩下的自己简单编程,此时就不要SystemInit。

error:  #268: declaration may not appear after executable statement in block

 error: #268: declaratio

目录

问题:在注释遇到意外的文件结束

Altium Designer 中在PCB环境下怎么一次性修改元件标号字体大小?

altium designer怎么调节原理图和pcb纸张大小

PCB设计规则的导入导出

在Altium Designer软件中怎样隐藏电气连接线

Keil.STM32F1xx_DFP.1.0.5 Cannot copy PDSC file to ".Download"folder的解决之道

FCARM - Output Name not specified, please check 'Options for Target - Utilities'解决方法

在C语言中为什么很多被调函数之前要加void?

XXX.axf: Error: L6218E: Undefined symbol xxx (referred from xxxx.o)

error:  #268: declaration may not appear after executable statement in block

error: #5: cannot open source input file "core_cm4.h": No such file or directory

​ ​


n may not appear after executable statement in block
uint8_t *pTxBuf = tx_buf;
error: #268: declaration may not appear after executable statement in block
uint16_t data_len = 6+len;

解决办法:变量声明不允许出现在语句之后.这种在语句之后声明变量的方式,c++允许,现在的很多c编译器也允许。
最早的c是不许这么写的,要求所有的局部变量必须在函数开头声明。
把uint8_t *pTxBuf = tx_buf;uint16_t data_len = 6+len;这两行移到函数最开

error: #5: cannot open source input file "core_cm4.h": No such file or directory

学习stm32过程中遇到的问题(还有部分是Altium Designer)_第1张图片

 

你可能感兴趣的:(stm32)