OpenEdv-开源电子网

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

bit转int(用int控制不同的bit电平)

[复制链接]

75

主题

458

帖子

4

精华

金牌会员

Rank: 6Rank: 6

积分
1635
金钱
1635
注册时间
2012-8-28
在线时间
71 小时
发表于 2015-1-11 11:34:23 | 显示全部楼层 |阅读模式
5金钱
已知8个LED灯顺序排列,但是控制LED灯的io脚不是同一个端口(GPIO A ~D),如何像51单片机那样P0=0x0f;控制

最佳答案

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

还不如搞个函数来的简单!
QQ750273008有好的资料记得发给我哦。。。
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

42

主题

358

帖子

0

精华

高级会员

Rank: 4

积分
890
金钱
890
注册时间
2014-8-16
在线时间
193 小时
发表于 2015-1-11 11:34:24 | 显示全部楼层
还不如搞个函数来的简单!
回复

使用道具 举报

16

主题

409

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1292
金钱
1292
注册时间
2014-12-20
在线时间
534 小时
发表于 2015-1-11 11:34:24 | 显示全部楼层
[mw_shl_code=c,true]//在stm8s上实现的。应该知道怎么改吧。[/mw_shl_code] [mw_shl_code=c,true]struct GPIO { GPIO_TypeDef* GPIO_Port; GPIO_Pin_TypeDef GPIO_Pin; }; struct GPIO Led_Duan[8] = { {GPIOD,GPIO_PIN_5}, //LED0 {GPIOA,GPIO_PIN_3}, //LED1 {GPIOC,GPIO_PIN_6}, //LED2 {GPIOD,GPIO_PIN_2}, //LED3 {GPIOD,GPIO_PIN_3}, //LED4 {GPIOD,GPIO_PIN_6}, //LED5 {GPIOC,GPIO_PIN_5}, //LED6 {GPIOC,GPIO_PIN_7}, //LED7 }; //============================================================================== //函数名称:led_display //功能概要:LED显示指定数据 //参数说明:Duan: 指定的数据 //函数返回:无 //============================================================================== void led_display(uint8_t Duan_Data) { (((Duan_Data>>0)&0x01) == 0)?GPIO_WriteLow(Led_Duan[0].GPIO_Port,Led_Duan[0].GPIO_Pin):GPIO_WriteHigh(Led_Duan[0].GPIO_Port,Led_Duan[0].GPIO_Pin); (((Duan_Data>>1)&0x01) == 0)?GPIO_WriteLow(Led_Duan[1].GPIO_Port,Led_Duan[1].GPIO_Pin):GPIO_WriteHigh(Led_Duan[1].GPIO_Port,Led_Duan[1].GPIO_Pin); (((Duan_Data>>2)&0x01) == 0)?GPIO_WriteLow(Led_Duan[2].GPIO_Port,Led_Duan[2].GPIO_Pin):GPIO_WriteHigh(Led_Duan[2].GPIO_Port,Led_Duan[2].GPIO_Pin); (((Duan_Data>>3)&0x01) == 0)?GPIO_WriteLow(Led_Duan[3].GPIO_Port,Led_Duan[3].GPIO_Pin):GPIO_WriteHigh(Led_Duan[3].GPIO_Port,Led_Duan[3].GPIO_Pin); (((Duan_Data>>4)&0x01) == 0)?GPIO_WriteLow(Led_Duan[4].GPIO_Port,Led_Duan[4].GPIO_Pin):GPIO_WriteHigh(Led_Duan[4].GPIO_Port,Led_Duan[4].GPIO_Pin); (((Duan_Data>>5)&0x01) == 0)?GPIO_WriteLow(Led_Duan[5].GPIO_Port,Led_Duan[5].GPIO_Pin):GPIO_WriteHigh(Led_Duan[5].GPIO_Port,Led_Duan[5].GPIO_Pin); (((Duan_Data>>6)&0x01) == 0)?GPIO_WriteLow(Led_Duan[6].GPIO_Port,Led_Duan[6].GPIO_Pin):GPIO_WriteHigh(Led_Duan[6].GPIO_Port,Led_Duan[6].GPIO_Pin); (((Duan_Data>>7)&0x01) == 0)?GPIO_WriteLow(Led_Duan[7].GPIO_Port,Led_Duan[7].GPIO_Pin):GPIO_WriteHigh(Led_Duan[7].GPIO_Port,Led_Duan[7].GPIO_Pin); }[/mw_shl_code]

回复

使用道具 举报

14

主题

490

帖子

1

精华

金牌会员

Rank: 6Rank: 6

积分
1229
金钱
1229
注册时间
2012-8-4
在线时间
248 小时
发表于 2015-1-11 11:53:42 | 显示全部楼层
不是15个连续led吗?
nrf51822蓝牙4.0手环开发板: 淘宝小店
回复

使用道具 举报

75

主题

458

帖子

4

精华

金牌会员

Rank: 6Rank: 6

积分
1635
金钱
1635
注册时间
2012-8-28
在线时间
71 小时
 楼主| 发表于 2015-1-11 12:54:48 | 显示全部楼层
回复【2楼】muniao:
---------------------------------
一个意思。我现在想找解决的方法,要简单有效。15个led灯顺序排列,但控制灯的io脚从GPIO A~D中抽io脚去控制。最后要用LEDCR=0x0f0f;这样的值,直接控制led亮灭。类似GPIOA=0x0f0f;这样。
QQ750273008有好的资料记得发给我哦。。。
回复

使用道具 举报

42

主题

358

帖子

0

精华

高级会员

Rank: 4

积分
890
金钱
890
注册时间
2014-8-16
在线时间
193 小时
发表于 2015-1-11 13:07:34 | 显示全部楼层
弄个16位的结构体 每一位用位带操作对应一个LED灯 应该可以的吧
回复

使用道具 举报

75

主题

458

帖子

4

精华

金牌会员

Rank: 6Rank: 6

积分
1635
金钱
1635
注册时间
2012-8-28
在线时间
71 小时
 楼主| 发表于 2015-1-11 13:09:38 | 显示全部楼层
回复【4楼】Theone:
---------------------------------
能写下,给我参考下吗?
QQ750273008有好的资料记得发给我哦。。。
回复

使用道具 举报

42

主题

358

帖子

0

精华

高级会员

Rank: 4

积分
890
金钱
890
注册时间
2014-8-16
在线时间
193 小时
发表于 2015-1-11 13:11:18 | 显示全部楼层
把每一位的地址映射到位带上 只是想想 我也没这么做过
就类似 
struct {
 a:1
 b:1
 .
 .
 .
 写够8位


然后把每一位的地址映射到位带上 
好像不能这样的吧 !
回复

使用道具 举报

3

主题

2170

帖子

0

精华

资深版主

Rank: 8Rank: 8

积分
5782
金钱
5782
注册时间
2013-11-22
在线时间
1212 小时
发表于 2015-1-11 19:45:50 | 显示全部楼层
试试搞个简单的函数 然后调用
先位带定义LED0~LED15
然后写个简单函数  
void led_light(unsigned int led_bit)  //led_bit的每一位指示一个LED
{
    LED0=led_bit>>0;
    LED1=led_bit>>1;
    ....  
    LED15=led_bit>>15;
}
我没用过   LZ可以试一下
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-6-27 05:43

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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