OpenEdv-开源电子网

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

请问怎样将两组不同的端口,组合到一起同时操作呢

[复制链接]

2

主题

6

帖子

0

精华

新手上路

积分
38
金钱
38
注册时间
2013-9-12
在线时间
1 小时
发表于 2014-10-9 11:47:07 | 显示全部楼层 |阅读模式
5金钱
如题:
        在调试数码管的时候,一组数码管用的 是PB5-PB12,另外一组是PA口的一部分和PB口的一部分拼起来的8个端口,现在想把几个端口同时操作,我该怎么做呢,用的是寄存器版本的

最佳答案

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

这是我的笨办法。 LCD端口初始化 //LCD_D0->A9, LCD_D1->A10, LCD_D2->A11,  LCD_D3->A12 //LCD_D4->A15, LCD_D5->B3, LCD_D6->B4, LCD_D7->B5 //数据端口配置 GPIO_InitStructure.GPIO_Pin = GPIO_Pin_9|GPIO_Pin_10|GPIO_Pin_11|GPIO_Pin_12|GPIO_Pin_15; //PA9,PA10,PA11,PA12,PA15 端口配置 GPIO_InitStructure.GPIO_Mode = GPIO_Mode_OUT;   ...
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

8

主题

42

帖子

0

精华

初级会员

Rank: 2

积分
113
金钱
113
注册时间
2013-12-21
在线时间
3 小时
发表于 2014-10-9 11:47:08 | 显示全部楼层
这是我的笨办法。

LCD端口初始化

//LCD_D0->A9, LCD_D1->A10, LCD_D2->A11,  LCD_D3->A12
//LCD_D4->A15, LCD_D5->B3, LCD_D6->B4, LCD_D7->B5
//数据端口配置
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_9|GPIO_Pin_10|GPIO_Pin_11|GPIO_Pin_12|GPIO_Pin_15; //PA9,PA10,PA11,PA12,PA15 端口配置
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_OUT;    //推挽输出
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;   //IO口速度为50MHz
GPIO_Init(GPIOA, &GPIO_InitStructure);      //根据设定参数初始化PA9,PA10,PA11,PA12,PA15
  
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_3|GPIO_Pin_4|GPIO_Pin_5;   //PB3,PB4,PB5 端口配置
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_OUT;    //推挽输出
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;   //IO口速度为50MHz
GPIO_Init(GPIOB, &GPIO_InitStructure);      //根据设定参数初始化PB3,PB4,PB5

//LCD1602数据
void LCD_DATAOUT(INT8U Data)
{
 INT8U Temp;
 Temp=Data;
 
 //判断第0位
 if(Temp&0x01)
  GPIOB->BSRR=GPIO_Pin_5;
 else
  GPIOB->BRR=GPIO_Pin_5;

 //判断第1位
 if(Temp&0x02)
  GPIOB->BSRR=GPIO_Pin_4;
 else
  GPIOB->BRR=GPIO_Pin_4;

 //判断第2位
 if(Temp&0x04)
  GPIOB->BSRR=GPIO_Pin_3;
 else
  GPIOB->BRR=GPIO_Pin_3;

 //判断第3位
 if(Temp&0x08)
  GPIOA->BSRR=GPIO_Pin_15;
 else
  GPIOA->BRR=GPIO_Pin_15;

 //判断第4位
 if(Temp&0x10)
  GPIOA->BSRR=GPIO_Pin_12;
 else
  GPIOA->BRR=GPIO_Pin_12;

 //判断第5位
 if(Temp&0x20)
  GPIOA->BSRR=GPIO_Pin_11;
 else
  GPIOA->BRR=GPIO_Pin_11;

 //判断第6位
 if(Temp&0x40)
  GPIOA->BSRR=GPIO_Pin_10;
 else
  GPIOA->BRR=GPIO_Pin_10;

 //判断第7位
 if(Temp&0x80)
  GPIOA->BSRR=GPIO_Pin_9;
 else
  GPIOA->BRR=GPIO_Pin_9;
}

 

回复

使用道具 举报

230

主题

1950

帖子

10

精华

论坛元老

Rank: 8Rank: 8

积分
4562
金钱
4562
注册时间
2010-12-14
在线时间
32 小时
发表于 2014-10-9 14:22:13 | 显示全部楼层
那你只能通过宏定义去操作了吧。。。
我是开源电子网?网站管理员,对网站有任何问题,请与我联系!QQ:389063473Email:389063473@qq.com
回复

使用道具 举报

230

主题

1950

帖子

10

精华

论坛元老

Rank: 8Rank: 8

积分
4562
金钱
4562
注册时间
2010-12-14
在线时间
32 小时
发表于 2014-10-9 14:22:29 | 显示全部楼层
你说的一起操作,是指怎样?
我是开源电子网?网站管理员,对网站有任何问题,请与我联系!QQ:389063473Email:389063473@qq.com
回复

使用道具 举报

2

主题

6

帖子

0

精华

新手上路

积分
38
金钱
38
注册时间
2013-9-12
在线时间
1 小时
 楼主| 发表于 2014-10-10 09:44:24 | 显示全部楼层
我的意思是比如我要将PB5-PB12这8位一起置1或者置0,或者其中某些位置0或1,而不影响PB口的其他端口。或者PA口中某几位和PB口中的某几位一起置0或1,就是要驱动2组3位7段的数码管显示,一组在PB口的5-12,另外一组由PA口和PB口组合而成
回复

使用道具 举报

26

主题

467

帖子

1

精华

论坛大神

Rank: 7Rank: 7Rank: 7

积分
876
金钱
876
注册时间
2013-10-3
在线时间
23 小时
发表于 2014-10-10 10:05:53 | 显示全部楼层
回复【5楼】aallon:
---------------------------------
既要使用起来简单,还要可以把不同的端口组合。。你可以先把不同的端口组合用简单易行的方法写出来,然后再#define一下啊,为了便于可移植性,你就得在那个简单易行的写法中把参数的设定写复杂点,你多再想想应该可以写出来。。。。不知道你明白我的意思了没有。。。
避免犯错本是错误所在,我错故我在……
回复

使用道具 举报

2

主题

6

帖子

0

精华

新手上路

积分
38
金钱
38
注册时间
2013-9-12
在线时间
1 小时
 楼主| 发表于 2014-10-13 11:38:53 | 显示全部楼层
回复【6楼】zhang164534:
---------------------------------
 不明白啊,初学软件,公司的软件人员走了,要改程序,我一直都是做硬件的。
回复

使用道具 举报

2

主题

6

帖子

0

精华

新手上路

积分
38
金钱
38
注册时间
2013-9-12
在线时间
1 小时
 楼主| 发表于 2014-10-13 11:43:16 | 显示全部楼层
回复【4楼】biyabc:
---------------------------------
没有看懂啊
回复

使用道具 举报

26

主题

467

帖子

1

精华

论坛大神

Rank: 7Rank: 7Rank: 7

积分
876
金钱
876
注册时间
2013-10-3
在线时间
23 小时
发表于 2014-10-13 17:15:42 | 显示全部楼层
回复【7楼】aallon:
---------------------------------
额 不好意思,,人在公司,,电脑上没有哦,,我记得论坛上有的,以前无意中翻出来的,你多找找看
避免犯错本是错误所在,我错故我在……
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-6-30 11:51

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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