STM32实现位绑定遇见的难题,请各路大神支支招

Modric_LMG 2018-07-18 10:41:36
源程序如下:
#include<stm32f10x.h>
#include<stdio.h>

#define GPIOA_ODR_A (GPIOA_BASE+0x0C)
#define GPIOA_IDR_A (GPIOA_BASE+0x08)
#define GPIOB_ODR_B (GPIOB_BASE+0x0C)
#define GPIOB_IDR_B (GPIOB_BASE+0x08)
#define GPIOC_ODR_C (GPIOC_BASE+0x0C)
#define GPIOC_IDR_C (GPIOC_BASE+0x08)
#define GPIOD_ODR_D (GPIOD_BASE+0x0C)
#define GPIOD_IDR_D (GPIOD_BASE+0x08)
#define GPIOE_ODR_E (GPIOE_BASE+0x0C)
#define GPIOE_IDR_E (GPIOE_BASE+0x08)
#define GPIOE_ODR_F (GPIOF_BASE+0x0C)
#define GPIOE_IDR_F (GPIOF_BASE+0x08)
#define GPIOE_ODR_G (GPIOG_BASE+0x0C)
#define GPIOE_IDR_G (GPIOG_BASE+0x08)
#define BitBand(Addr,BitNum) *((volatile unsigned long *)(((Addr&0xF0000000)+0x02000000)+((Addr*0xfffff) << 5)+(BitNum << 2)))

#define PAout(n) BitBand(GPIOA_ODR_A,n)
#define PAin(n) BitBand(GPIOA_IDR_A,n)
#define PBout(n) BitBand(GPIOB_ODR_B,n)
#define PBin(n) BitBand(GPIOB_IDR_B,n)
#define PCout(n) BitBand(GPIOC_ODR_C,n)
#define PCin(n) BitBand(GPIOC_IDR_C,n)
#define PDout(n) BitBand(GPIOD_ODR_D,n)
#define PDin(n) BitBand(GPIOD_IDR_D,n)
#define PEout(n) BitBand(GPIOE_ODR_E,n)
#define PEin(n) BitBand(GPIOE_IDR_E,n)
#define PFout(n) BitBand(GPIOF_ODR_F,n)
#define PFin(n) BitBand(GPIOF_IDR_F,n)
#define PGout(n) BitBand(GPIOG_ODR_G,n)
#define PGin(n) BitBand(GPIOG_IDR_G,n)

int main(void)
{
u32 *PA3 = (u32 *)(0x42000000+(0x1080C<<5)+(3<<2));
u32 *PA11 = (u32 *)(0x42000000+((0x40010808-0x40000000)<<5)+(11<<2));

GPIOA->CRL = 0x33333333;
GPIOA->CRH = 0x44444444;

while(1)
{
if(PAin(12)== 1) PAout(4) = 1;
else PAout(4) = 0;

if(*PA11 == 1) *PA3 = 1;
else *PA3 = 0;
}
// return(1);
}
void SystemInit()
{

}

其中的if(PAin(12)== 1) PAout(4) = 1;
else PAout(4) = 0;
语句的功能无法实现,请各位大神支支招,小弟刚开始学习;
...全文
177 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
灌水号 2018-07-19
  • 打赏
  • 举报
回复
你参考一下这里
https://blog.csdn.net/hk604296024/article/details/41870963
对比你的BitBand这个宏的定义。
这里做底层的比较少,http://www.openedv.com/这里多一点。
现在STM的开发一般用HAL库,标准库已经不更新了。用HAL库, 再使用stm32cubemx 配置就可以用了。
Modric_LMG 2018-07-19
  • 打赏
  • 举报
回复
老哥,我刚开始学,我这个位绑定的函数的功能实现不了,也没有报错,麻烦帮我看看问题出在哪里??
灌水号 2018-07-18
  • 打赏
  • 举报
回复
。。。都2018年了怎么还用这种代码。用Cube一配置,后面的东西再用函数一封装就可以了。

69,373

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧