学习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

 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在使用Altium Designer进行电路板设计时,我们常常需要使用到各种元器件库。对于STM32微控制器,使用者可以通过Altium Designer官网或者第三方网站下载相应的库。 首先,我们可以访问Altium Designer官网,该网站提供了大量的STM32库供用户下载。用户可以在Altium官网的下载页面找到STM32库,并根据自己的需要选择合适的版本下载。 此外,用户可以通过第三方网站下载STM32库。有很多社区和论坛提供了丰富的电子元器件库资源,用户可以在这些网站上搜索和下载STM32库。一些著名的第三方网站例如SnapEDA、Ultra Librarian等,它们提供了大量的STM32库可供用户下载使用。 无论从哪个网站下载STM32库,我们需要确保下载的库与我们所使用的Altium Designer软件版本兼容。此外,还应该尽量选择正版的库文件,以确保库的可靠性和准确性。 下载好STM32库之后,用户需要将下载的库文件导入到Altium Designer进行使用。具体操作为:打开Altium Designer软件,在"Library"菜单下选择"Library Loader"选项。然后在Library Loader界面点击"Install"按钮,选择之前下载的STM32库文件,最后点击"Install"按钮进行安装。 安装完成后,在Altium Designer就可以使用已导入的STM32库了。我们可以通过"Place"工具在设计画面上放置STM32微控制器,并设置相应的参数和引脚连接。通过使用库提供的元件和封装,可以更方便地完成电路板设计并生成相应的制造文件。 总之,通过上述步骤,我们可以在Altium Designer下载和使用STM32库,以方便地进行STM32微控制器的电路板设计。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值