OpenEdv-开源电子网

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

stm32怎么输出01010110的方波?

[复制链接]

1

主题

2

帖子

0

精华

新手入门

积分
22
金钱
22
注册时间
2016-3-21
在线时间
2 小时
发表于 2016-3-21 22:40:06 | 显示全部楼层 |阅读模式
1金钱
在做毕设= =,小白一枚~主要的题目是做一个基于可见光通信的智能门禁系统,因为具体的硬件电路已经有了,所以主要要考虑编码调制方面。现在在想就是做一个钥匙 通过1~9的按键可以产生不同的序列的方波,比如1:01010110;2:01011001.....这样的方波再对LED进行调制,我想问想产生这种序列的方波用stm32怎么实现呢?求大神解答说个思路,直接用产生PWM波的方式分别产生吗?

最佳答案

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

我觉得你还不如直接用串口输出的数据来实现, 模式串口的方法,速度可以自由控制, 按一定的时间,根据需要输出的方法数据,改变脉冲输出管却的高电平或低电平。 #define BITBAND(addr, bitnum) ((addr & 0xF0000000)+0x2000000+((addr &0xFFFFF)
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

9

主题

507

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
3347
金钱
3347
注册时间
2013-4-10
在线时间
333 小时
发表于 2016-3-21 22:40:07 | 显示全部楼层
本帖最后由 likunxue 于 2016-3-22 02:50 编辑

我觉得你还不如直接用串口输出的数据来实现, 模式串口的方法,速度可以自由控制, 按一定的时间,根据需要输出的方法数据,改变脉冲输出管却的高电平或低电平。
#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 BIT_ADM(addr,bitnum)     MEM_ADDR(BITBAND(((u32)&(addr)),(bitnum)))

#define  MCLK             BIT_ADM(GPIOB->ODR, 6)    //脉冲输出线

void  OUT(char Dat)
        {            
       u8 j;
        k = Ma; //取得要发送的数据       
        for(j = 0; j < 8; j++)
            {
            if(Dat & 0x80) MCLK = 1;    //高位在前,低位在后, 如果低位在前,高位在后,反过来就行了
            MCLK  = 0;
            delay_us(10);        //脉冲输出的间,宽度,频率由这里控制   
            Dat <<= 1;
            }
        }
如果你怕脉宽不准,用定时器来实现就行了
MCLK  这条线上就是你需要的输出数据了,不知是不是你需的
   
   

回复

使用道具 举报

69

主题

495

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
2197
金钱
2197
注册时间
2015-11-14
在线时间
542 小时
发表于 2016-3-21 23:17:07 | 显示全部楼层
用if函数,判断哪个按键按了,再加入相应的方波编吗,有问题?
回复

使用道具 举报

7

主题

146

帖子

1

精华

高级会员

Rank: 4

积分
896
金钱
896
注册时间
2014-1-2
在线时间
156 小时
发表于 2016-3-22 10:48:14 | 显示全部楼层
直接用串口TX引脚
接收端用串口RX引脚
回复

使用道具 举报

58

主题

6294

帖子

1

精华

资深版主

Rank: 8Rank: 8

积分
11554
金钱
11554
注册时间
2014-4-1
在线时间
1317 小时
发表于 2016-3-22 10:54:53 | 显示全部楼层

用串口是个好思路,
不过要注意起始位、停止位。

回复

使用道具 举报

1

主题

2

帖子

0

精华

新手入门

积分
22
金钱
22
注册时间
2016-3-21
在线时间
2 小时
 楼主| 发表于 2016-3-24 20:06:53 | 显示全部楼层
likunxue 发表于 2016-3-22 02:39
我觉得你还不如直接用串口输出的数据来实现, 模式串口的方法,速度可以自由控制, 按一定的时间,根据需要 ...

谢谢~
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-6-19 13:15

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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