OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 8154|回复: 13

F407位带操作

[复制链接]

19

主题

130

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
229
金钱
229
注册时间
2014-1-11
在线时间
0 小时
发表于 2014-9-16 14:20:27 | 显示全部楼层 |阅读模式
5金钱

   F407为什么不能用F103一样的位带操作了,就是在主函数里面用LED1=0;之类的,谁能给我发一个F407原子哥的标准程序模型啊!

就是觉得以前在原子这买的F103的好用啊

最佳答案

查看完整内容[请看2#楼]

回复【4楼】正点原子: --------------------------------- #include "stm32f4xx.h" //IO口操作宏定义 #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)  & ...
战舰因我而精彩
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

9

主题

1385

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
12109
金钱
12109
注册时间
2013-3-8
在线时间
1287 小时
发表于 2014-9-16 14:20:28 | 显示全部楼层
回复【4楼】正点原子:
---------------------------------
#include "stm32f4xx.h"

//IO口操作宏定义
#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)) 
//IO口地址映射
#define GPIOA_ODR_Addr    (GPIOA_BASE+20) //0x40020014 
#define GPIOB_ODR_Addr    (GPIOB_BASE+20) //0x40020414 
#define GPIOC_ODR_Addr    (GPIOC_BASE+20) //0x40020814 
#define GPIOD_ODR_Addr    (GPIOD_BASE+20) //0x40020C14 
#define GPIOE_ODR_Addr    (GPIOE_BASE+20) //0x40021014 
#define GPIOF_ODR_Addr    (GPIOF_BASE+20) //0x40021414    
#define GPIOG_ODR_Addr    (GPIOG_BASE+20) //0x40021814   

#define GPIOA_IDR_Addr    (GPIOA_BASE+16) //0x40020010 
#define GPIOB_IDR_Addr    (GPIOB_BASE+16) //0x40020410 
#define GPIOC_IDR_Addr    (GPIOC_BASE+16) //0x40020810 
#define GPIOD_IDR_Addr    (GPIOD_BASE+16) //0x40020C10 
#define GPIOE_IDR_Addr    (GPIOE_BASE+16) //0x40021010 
#define GPIOF_IDR_Addr    (GPIOF_BASE+16) //0x40021410 
#define GPIOG_IDR_Addr    (GPIOG_BASE+16) //0x40021810 
 
//IO口操作,只对单一的IO口!
//确保n的值小于16!
#define Aout(n)   BIT_ADDR(GPIOA_ODR_Addr,n)  //输出 
#define Ain(n)    BIT_ADDR(GPIOA_IDR_Addr,n)  //输入 

#define Bout(n)   BIT_ADDR(GPIOB_ODR_Addr,n)  //输出 
#define Bin(n)    BIT_ADDR(GPIOB_IDR_Addr,n)  //输入 

#define Cout(n)   BIT_ADDR(GPIOC_ODR_Addr,n)  //输出 
#define Cin(n)    BIT_ADDR(GPIOC_IDR_Addr,n)  //输入 

#define Dout(n)   BIT_ADDR(GPIOD_ODR_Addr,n)  //输出 
#define Din(n)    BIT_ADDR(GPIOD_IDR_Addr,n)  //输入 

#define Eout(n)   BIT_ADDR(GPIOE_ODR_Addr,n)  //输出 
#define Ein(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)  //输入
回复

使用道具 举报

19

主题

130

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
229
金钱
229
注册时间
2014-1-11
在线时间
0 小时
 楼主| 发表于 2014-9-16 14:26:13 | 显示全部楼层
自己帮忙顶一下啦
战舰因我而精彩
回复

使用道具 举报

230

主题

1950

帖子

10

精华

论坛元老

Rank: 8Rank: 8

积分
4562
金钱
4562
注册时间
2010-12-14
在线时间
32 小时
发表于 2014-9-16 15:06:03 | 显示全部楼层
可以使用的。公司停电了,来电了回去发一份你
我是开源电子网?网站管理员,对网站有任何问题,请与我联系!QQ:389063473Email:389063473@qq.com
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2014-9-16 15:58:26 | 显示全部楼层
当然可以。
百度就有人发过了。。。
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2014-9-16 16:22:51 | 显示全部楼层
回复【5楼】augustedward:
---------------------------------
谢谢
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复

使用道具 举报

9

主题

1385

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
12109
金钱
12109
注册时间
2013-3-8
在线时间
1287 小时
发表于 2014-9-16 16:24:21 | 显示全部楼层
回复【6楼】正点原子:
呵呵,也是以前参考原子哥的103改的。
回复

使用道具 举报

19

主题

130

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
229
金钱
229
注册时间
2014-1-11
在线时间
0 小时
 楼主| 发表于 2014-9-17 11:44:57 | 显示全部楼层
非常感谢你,我也有点发现了,哈哈
战舰因我而精彩
回复

使用道具 举报

19

主题

130

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
229
金钱
229
注册时间
2014-1-11
在线时间
0 小时
 楼主| 发表于 2014-9-17 11:45:59 | 显示全部楼层
回复【5楼】augustedward:
---------------------------------
你能把407的一个跑马灯的程序源码给我吗,像103那种格式的
战舰因我而精彩
回复

使用道具 举报

19

主题

130

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
229
金钱
229
注册时间
2014-1-11
在线时间
0 小时
 楼主| 发表于 2014-9-17 11:46:29 | 显示全部楼层
回复【5楼】augustedward:
---------------------------------
谢谢你,大哥,帮帮忙!
战舰因我而精彩
回复

使用道具 举报

9

主题

1385

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
12109
金钱
12109
注册时间
2013-3-8
在线时间
1287 小时
发表于 2014-9-18 08:41:58 | 显示全部楼层
回复【9楼】heixinhai:
---------------------------------
这个我还真没有。我写的是公司用的代码。没有跑马灯这个程序。
定义IO
#define led1         PCout(0)                   
#define led2         PCout(2)                   
#define led3         PCout(3)                  

初始化IO
GPIO_InitTypeDef  GPIO_InitStructure;

RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOA|RCC_AHB1Periph_GPIOB|RCC_AHB1Periph_GPIOC|RCC_AHB1Periph_GPIOD|RCC_AHB1Periph_GPIOE, ENABLE);
/*************************????********************************/
    GPIO_InitStructure.GPIO_Mode = GPIO_Mode_OUT;
    GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;
    GPIO_InitStructure.GPIO_Speed = GPIO_Speed_25MHz;
    GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_NOPULL;
  
    GPIO_InitStructure.GPIO_Pin =GPIO_Pin_0|GPIO_Pin_2|GPIO_Pin_3;
    GPIO_Init(GPIOC, &GPIO_InitStructure);


主循环:
 while (1)
  {
        led2=1;
delay_ms(50);
 led2=0; 
        delay_ms(50);
  }
回复

使用道具 举报

19

主题

130

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
229
金钱
229
注册时间
2014-1-11
在线时间
0 小时
 楼主| 发表于 2014-9-18 11:14:06 | 显示全部楼层
回复【11楼】augustedward:
---------------------------------
谢谢,知道了,呵呵,麻烦你了!!!
战舰因我而精彩
回复

使用道具 举报

12

主题

33

帖子

0

精华

初级会员

Rank: 2

积分
112
金钱
112
注册时间
2018-2-28
在线时间
23 小时
发表于 2018-9-4 17:21:46 | 显示全部楼层
augustedward 发表于 2014-9-16 14:20
回复【4楼】正点原子:
---------------------------------
#include&nbsp;&quot;stm32f4xx.h&quot;
       
//IO口操作 ...

这个F4位带的地址和F1的位带的地址有点不一样哦。
  F1的是GPIOX_BASE+12
而F4的位带是GPIOX_BASE+20
回复

使用道具 举报

9

主题

1385

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
12109
金钱
12109
注册时间
2013-3-8
在线时间
1287 小时
发表于 2018-9-4 19:35:37 | 显示全部楼层
JQChris 发表于 2018-9-4 17:21
这个F4位带的地址和F1的位带的地址有点不一样哦。
  F1的是GPIOX_BASE+12
而F4的位带是GPIOX_BASE+20

F4与F1的地址是不一样
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-7-10 01:40

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表