STM32自学笔记(持续更新)

1.STM32的IO口不能直接驱动大功率器件,比如继电器,蜂鸣器。

2.keil编译stm32程序出现declaration may not appear after executable statement in block
原因:在.h文件中,变量的定义要放在函数的开始,不能先初始化时钟或作其他操作,然后定义变量
网址:https://www.cnblogs.com/yekongdexingxing/p/6605190.html

3.keil编译用寄存器编写的LED程序,报错main.c(15): error: #165: too few arguments in function call
原因:寄存器版本的delay函数中需要传参,与库函数版本不同(正点原子)
网址:http://www.openedv.com/posts/list/25039.htm

4.MDK在编译时出现报错expression must have pointer type
解决办法:将结构体中的->改为.
具体代码:

	GPIO_InitTypeDef GPIO_Init_Struct_GPIOB;
	GPIO_Init_Struct_GPIOB->GPIO_Pin=GPIO_Pin_8;

改为:

GPIO_InitTypeDef GPIO_Init_Struct_GPIOB;
GPIO_Init_Struct_GPIOB.GPIO_Pin=GPIO_Pin_8;

5.MDK出现编译警告:warning: #223-D: function “key_init” declared implicitly
原因:在.h文件中声明函数时结构错误:

#ifdef _keybit
#define _keybit
....
#endif

解决办法:把#ifdef _keybit改为#ifndef _keybit
6.MDK出现编译警告:last line of file ends without a newline
原因:
(1)函数的‘}’后面或者#endif后面没有加回车;
(2)函数没有顶格写,eg:

int main(void)
{
	......
}
若int或者‘{’或者‘}’没顶格写,也会出现这个警告

7.程序编译通过,无逻辑错误,配置也无问题,但程序下载到单板上无现象
解决过程:把能正常运行的源码的.c,.h,main函数分别copy到自己写的程序中,注释掉自己的代码,逐步判断是哪个文件的问题,最后发现是初始化的顺序有问题
总结:在初始化中,定义完变量,应该立刻去初始化时钟,顺序不可变。若不先定义变量,见2;若把时钟的初始化放后面,就会导致程序下载到单板后,单板无反应
8.switch casey语句使用格式如下:

switch(表达式)
{
	case 值1:
	语句;
	break;
	case 值2:
	语句:
	break;
	...
	default:
	语句;
	break;//可不写
}

如没有加“{}”,会出现报错:a case label may only be used within a switch
9.在STM32按键实验中,进行键扫描时,无法判断PE2-PE4的按键,得不到返回值
原因:if语句中的条件写错了。错误写法:

if(GPIO_ReadInputDataBit(GPIOA,GPIO_Pin_0)==1 || GPIO_ReadInputDataBit(GPIOE,GPIO_Pin_2 | GPIO_Pin_3 | GPIO_Pin_4)==0)

正确写法为:

if(GPIO_ReadInputDataBit(GPIOA,GPIO_Pin_0)==1 || GPIO_ReadInputDataBit(GPIOE,GPIO_Pin_2)==0 || GPIO_ReadInputDataBit(GPIOE,GPIO_Pin_3)==0 || GPIO_ReadInputDataBit(GPIOE,GPIO_Pin_4)==0)

10.编译后main函数中出现警告:function “exti_init” declared implicitly
原因:.h中定义的函数头为exti(),在.c中变成了exti_init(),两者不一致导致告警
11.宏定义的相当于是给端口重新起了一个名字,宏定义的句尾不能加分号,否则在引用宏定义的端口名称时,会出现无法赋值的现象,提示:expected an expression
12.(PORTB&0x00000020)>>5;只取PORTB的第5位,其他全为0,然后右移5位,如果结果为低电平0则为0x00000000,结果为高电平1则为0x00000001

中断优先级 抢占优先级 中断分组 NVIC EXTI
相关知识后续补充

猜你喜欢

转载自blog.csdn.net/weixin_44941350/article/details/117443837