在工程模板中建立了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