STMF4 自己写的头文件中宏定义遇到BSRR找不到的问题(已包含了头文件stmf4xx.h)

在工程模板中建立了myiic.h 并在其中写了如下:

#ifndef __MYIIC_H
#define __MYIIC_H
#include "stm32f4xx.h"
#include "sys.h"
#include "delay.h"

/*模拟IIC端口输出输入定义*/
#define SCL_H GPIOB->BSRR = GPIO_Pin_6
#define SCL_L GPIOB->BRR  = GPIO_Pin_6

在MYIIC.C里面调用SCL_H时候被警告…\HARDWARE\JY901\myiic.c(84): error: #136: struct “” has no field “BSRR”

于是跑去头文件找BSRR的Definition . 结果显示undefined. 又跑去头文件找这个玩意. 只找到了BSRRH BSRRL。

STM32F1可正常使用,STM32F4不可。

原因是:

STM32F4已经不使用BSRR和BRR了,用BSRRH和BSRRL代替就行,这种命名比以前更容易理解。

#define SCL_H GPIOB->BSRRH = GPIO_Pin_6 
#define SCL_L GPIOB->BSRRL = GPIO_Pin_6
发布了16 篇原创文章 · 获赞 9 · 访问量 2407

猜你喜欢

转载自blog.csdn.net/weixin_44587775/article/details/99704971
今日推荐