你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

菜鸟求助,STM32F103RGT6位带操作不成功

[复制链接]
huishowhui 提问时间:2019-5-30 17:02 /
本帖最后由 huishowhui 于 2019-5-31 11:42 编辑

各位大神,我是一个入门级的超级菜鸟,遇到一个问题:
为啥子我同样的位带操作在STM32F103C8T6上操作成功,但是在STM32F103RGT6位带操作不成功。搞得我很郁闷ing
求科普
收藏 评论4 发布时间:2019-5-30 17:02

举报

4个回答
edmundlee 回答时间:2019-5-30 18:23:09
怎样操作不说
是怎样得知不成功也不说
也许回答你的问题不是很困难,
但要猜到你问的问题确实很难呢
xing1954 回答时间:2019-5-31 04:42:15
检查下位带地址对不对。

评分

参与人数 1蝴蝶豆 +2 收起 理由
STMCU + 2

查看全部评分

huishowhui 回答时间:2019-5-31 11:45:55
#ifndef _system_H
#define _system_H

#include "stm32f1xx_hal.h"

#define BITBAND(addr, bitnum) ((addr & 0xF0000000)+0x2000000+((addr &0xFFFFF)<<5)+(bitnum<<2))
#define MEM_ADDR(addr)  *((volatile unsigned long  *)(addr))
#define BIT_ADDR(addr, bitnum)   MEM_ADDR(BITBAND(addr, bitnum))

#define GPIOA_ODR_Addr    (GPIOA_BASE+12) //0x4001080C
#define GPIOB_ODR_Addr    (GPIOB_BASE+12) //0x40010C0C
#define GPIOC_ODR_Addr    (GPIOC_BASE+12) //0x4001100C
#define GPIOD_ODR_Addr    (GPIOD_BASE+12) //0x4001140C
#define GPIOE_ODR_Addr    (GPIOE_BASE+12) //0x4001180C
#define GPIOF_ODR_Addr    (GPIOF_BASE+12) //0x40011A0C   
#define GPIOG_ODR_Addr    (GPIOG_BASE+12) //0x40011E0C   

#define GPIOA_IDR_Addr    (GPIOA_BASE+8) //0x40010808
#define GPIOB_IDR_Addr    (GPIOB_BASE+8) //0x40010C08
#define GPIOC_IDR_Addr    (GPIOC_BASE+8) //0x40011008
#define GPIOD_IDR_Addr    (GPIOD_BASE+8) //0x40011408
#define GPIOE_IDR_Addr    (GPIOE_BASE+8) //0x40011808
#define GPIOF_IDR_Addr    (GPIOF_BASE+8) //0x40011A08
#define GPIOG_IDR_Addr    (GPIOG_BASE+8) //0x40011E08


#define PAout(n)   BIT_ADDR(GPIOA_ODR_Addr,n)   
#define PAin(n)    BIT_ADDR(GPIOA_IDR_Addr,n)  

#define PBout(n)   BIT_ADDR(GPIOB_ODR_Addr,n)
#define PBin(n)    BIT_ADDR(GPIOB_IDR_Addr,n)

#define PCout(n)   BIT_ADDR(GPIOC_ODR_Addr,n)  
#define PCin(n)    BIT_ADDR(GPIOC_IDR_Addr,n)

#define PDout(n)   BIT_ADDR(GPIOD_ODR_Addr,n)
#define PDin(n)    BIT_ADDR(GPIOD_IDR_Addr,n)

#define PEout(n)   BIT_ADDR(GPIOE_ODR_Addr,n)  
#define PEin(n)    BIT_ADDR(GPIOE_IDR_Addr,n)

#define PFout(n)   BIT_ADDR(GPIOF_ODR_Addr,n)  
#define PFin(n)    BIT_ADDR(GPIOF_IDR_Addr,n)  

#define PGout(n)   BIT_ADDR(GPIOG_ODR_Addr,n)  
#define PGin(n)    BIT_ADDR(GPIOG_IDR_Addr,n)  

#endif

这是头文件
手里有两块开发板,一块是C8T6的,一块是RGT6的。
用STM32cube分别选 STM32F103C8T6和STM32F103RGT6建立不同的工程并生成代码,设置好同样的PC1端口(端口设置也一样,推挽模式,上拉、高速)输出点亮LED,LED正极直接接IO口,负极接GND。在主函数中设置Pcout(1)=1;STM32F103C8T6的板子可以点亮led,但是STM32F103RGT6的LED不亮。
edmundlee 回答时间:2019-5-31 12:47:29
这段代码没问题
你的问题应该在别的地方

评分

参与人数 1蝴蝶豆 +1 收起 理由
STMCU + 1

查看全部评分

所属标签

相似问题

官网相关资源

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
微信公众号二维码 微信公众号
手机版二维码 手机版