完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
`#define BUSY(x) GPIO_Pin_Set(GPIOD,PIN8,x) while(BUSY == 1); 这样写为什么会报错 未定义 原子的案例里这样也不能写 u8 GPIO_Pin_Get(GPIO_TypeDef* GPIOD,u16 pin8) { if(GPIOD->IDR&pin8)return 1; else return 0;` |
|
相关推荐
13个回答
|
|
那应该怎么写
|
|
|
|
主要是你需要先说清楚到底想要干嘛,我们才能帮你达到
|
|
|
|
while(BUSY == 1);
你这个BUSY编译器不认识啊,如果是调用GPIO_Pin_Set(GPIOD,PIN8,x),必须 while(BUSY(2) == 1); 这样编译器才认识BUSY是个啥东西。 函数再调用的时候不能只写函数名称,要写括号和参数的,你这里都没有,编译器怎能知道是要掉用什么,所以只能报错了。 |
|
|
|
|
|
|
|
vyewrewr 发表于 2019-5-16 20:11 这样写也不对呀 |
|
|
|
我只是说一个大概啊 从名字上来说GPIO_Pin_Get(GPIOD,PIN8),这样的名字是获取状态,当然如果这个函数返回的是1或者0那么就可以放在while里循环了。
if(GPIOD->IDR&pin8)关于这个 我认为应该写成 if((GPIOD->IDR&pin8)==0x100)这样 就行了。仅代表个人意见 |
|
|
|
本帖最后由 无薪税绵 于 2018-4-4 15:58 编辑
建议,使用HAL库吧,方便。 用法: if(HAL_GPIO_ReadPin(GPIOD,GPIO_PIN_8)==0) { ; } else { ; } 如果想用宏的话,可以这样: #define BUSY HAL_GPIO_ReadPin(GPIOD,GPIO_PIN_8) 关于详细的 STM32使用HAL库操作GPIO ,请参考: https://www.cnblogs.com/feipeng8848/p/7248898.html |
|
|
|
这个函数是写,你要找到读的函数才行
|
|
|
|
本帖最后由 wenyangzeng 于 2018-4-4 16:51 编辑
GPIO_Pin_Set(GPIOD,PIN8,x) 的写法只是固件库适用,HAL库不能用,况且这里是写不是读。 F7X系列只能用HAL库: 写:HAL_GPIO_WritePin(GPIOD, GPIO_PIN_8,GPIO_PIN_SET) 读:HAL_GPIO_ReadPin(GPIOD,GPIO_PIN_8 ) |
|
|
|
宏定义相当于替换,你看看 while(GPIO_Pin_Set(GPIOD,PIN8) == 1) 是个什么?
GPIO_Pin_Set()一般是没有返回值的viod类型, 不知道你的函数定义里面是什么样的。标准库函数中,读是“void GPIO_SetBits(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin)”,写是“uint8_t GPIO_ReadInputDataBit(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin)” 至于下面一条说 “原子的案例里这样也不能写”,那得看报什么错?本身这个函数这样写是没有语法问题的。 |
|
|
|
GPIO_Pin_Set(GPIOD,PIN8,x)直接这样调用会报错吗?
|
|
|
|
大家多多指教,多多学习,活到老学到老,哈哈哈哈哈哈
|
|
|
|
大家多多指教,多多学习,活到老学到老,哈哈哈哈哈哈,加油,在吗?
|
|
|
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
1751 浏览 1 评论
AD7686芯片不传输数据给STM32,但是手按住就会有数据。
1632 浏览 3 评论
4192 浏览 0 评论
如何解决MPU-9250与STM32通讯时,出现HAL_ERROR = 0x01U
1778 浏览 1 评论
hal库中i2c卡死在HAL_I2C_Master_Transmit
2241 浏览 1 评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-12 23:45 , Processed in 0.833185 second(s), Total 74, Slave 64 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号