您的位置 首页 FPGA

Stm32编译自己总结的技巧(或许适应于任何keil编译)

1定义的函数名字和数组名字不能相同,否则报错2定义无参函数的时候要加void否则加上函数声明的时候在编译的时候会出现警告3任何函数必

1.界说的函数姓名和数组姓名不能相同,不然报错

2.界说无参函数的时分要加void 不然加上函数声明的时分在编译的时分会呈现正告
3.任何函数有必要首要进行变量声明,然后才干是可执行的句子(declaration may not appear after executable statement in block)
4.内核中止能够硬件自己清标志位,外设中止有必要手动(软件)清标志位
5.界说变量的时分,假如不预先赋初值,则初始值就不一定是0;关于初值有要求的,一定要界说的时分赋值,牢记!
6.同一中止线上的中止口只能用一个,比方PA1和PB1只能用一个可是能够挑选进中止后判别电平来核算
7.keil工程途径不能太深,并且姓名(每一层文件夹姓名)不能过长,不然不能进入debug或许进入之后不能正常调试。
8.假如能够进debug。可是不能打断点,测验将工程装备康复默许(下面的default),一起删去主动生成的一切文件,从头试一下,从前这样成功过(用st—link2),详细原因不明。(后发现是接触不良)
9.中止初始化的时分假如呈现死在NVIC_Init(&NVIC_InitStructure);这一句上面,很有或许是无限进中止,由于第一次进中止形似和装备没有关系,并且有些中止假如不清中止标志位,则会一向进,所以一定在中止服务函数里边清中止标志位。特别是TIM定时器。
10.预处理指令中运用了反斜杠,这儿解释一下:每一条预处理句子总是以”#”字符开端,并且不能超过一行,一旦遇到换行符句子就被作为完毕,仅有的一种能将预处理句子扩展到多行的方法便是在换行符之前加一个反斜杠()。

11.界说指针,一定要先初始化,不然意想不到的结果。

12.stm32 spi1和spi的通用的装备函数,spi1比spi2快一倍,因而或许影响传输间隔和速度(测验于sd卡通信得知)

13.keil假如无法打断点,并且是悉数不能打断点,或许是勾选了Download to Flash;(方位:Debug—》setting–》(debug选项卡右下角))

14.stm32在体系初始化之前最好加个延时,不然或许会犯错(一般都是电源不稳定,复位电路不稳定形成的),这个延时只能是for循环延时,在体系做任何操作之前,此仅仅为解决方法,并不是根本原因。原则上讲,电路应该做一个RC复位电路,上电之前复位。

15. 假如呈现编译不报错,可是便是有个红X提示,能够把C99形式去掉编译下,再改回来就好了

16.KEIL MDK 中是否勾选运用 micro lib,或许会影响时序。调试RC522时分,模仿spi,其他通讯正常,在运用读写卡两个函数的时分,有必要勾选才能够

17.STM32F0系列的关于stlink的线要求不能过长,或许驱动不起来,能检测到不代表就能用.

18.现在测验串口收发测验的时分,假如打个断点(keil中),到了断点暂停之后,假如串口在暂停状况下接纳数据,那么持续运转之后将会死在串口接纳中止里边,并且还查不到中止标识,传说是stm32的bug,在此符号(用的芯片stm32f030f4p6)

19.今日调试51的程序的时分,发现串口中止里边不要参加发送中止的判别和设置,不然,至少现在发现定时器和串口不能一起运用的问题.

20.同上,也是串口的问题,半个月之后发现新问题,由于这个串口协议时序要求比较强,一向会偶然呈现接纳到过错的数据,后来在串口发送之前加上ES=0;发送完后ES=1;就ok了,意思便是发送过程中制止串口中止;

21.在485总线上,任何时刻都只能有一个主机发送数据,并且其他485芯片有必要处于接纳状况,即便处于发送状况可是不发送数据也不可,不然会形成数据过错!

22.在进行判别句子的时分,c语言中==是比|(或),&(与)这些优先级高的,所以if(0==a&b)和if(0==(a&b))这两个是不一样的.

声明:本文内容来自网络转载或用户投稿,文章版权归原作者和原出处所有。文中观点,不代表本站立场。若有侵权请联系本站删除(kf@86ic.com)https://www.86ic.net/fangan/fpga/259258.html

为您推荐

联系我们

联系我们

在线咨询: QQ交谈

邮箱: kf@86ic.com

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

返回顶部