打印
[STM32F2]

谁能发给我参考?

[复制链接]
695|19
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
zyf部长|  楼主 | 2021-1-11 22:59 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
STM32 多机通信的例程? 要通过第9位来识别地址帧 或 数据帧的

使用特权

评论回复
沙发
zhenykun| | 2021-1-11 23:02 | 只看该作者

通过第9位来识别地址帧 或 数据帧的
官方没有参考程序,你自己写好了;

使用特权

评论回复
板凳
zyf部长|  楼主 | 2021-1-11 23:04 | 只看该作者
51单片机多机通信,主机可以通过TB8=1或=0来控制发送的是地址帧或者数据帧 ,在STM32里时如何实现这个功能?

使用特权

评论回复
地板
chuxh| | 2021-1-11 23:09 | 只看该作者
楼主,我看到手册中在多处理器通讯中有描述,通过MSB是1还是0 来区分地址和数据,看看是不是你想要的。而且在标准外设库中的例程有一个。103xx 的外设中名字是 “MultiProcessor”的例程。

使用特权

评论回复
5
stly| | 2021-1-11 23:12 | 只看该作者
参考手册中在USART 的“多处理器通信”中有详细解释,你可以看看。这里不好黏贴进来哦~~~

使用特权

评论回复
6
jiaxw| | 2021-1-11 23:15 | 只看该作者
由于要设置外部器件的使能和方向,所以需要输出稳定的高电平或者低电平,我觉得不难,就按照自己的想法配置了,代码如下,
   RCC_AHB1PeriphClockCmd( RCC_AHB1Periph_GPIOE, ENABLE);
    GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0|GPIO_Pin_1|GPIO_Pin_2|GPIO_Pin_3|GPIO_Pin_4|GPIO_Pin_5|GPIO_Pin_6|GPIO_Pin_7;            
    GPIO_InitStructure.GPIO_Mode = GPIO_Mode_OUT;
    GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;
    GPIO_InitStructure.GPIO_Speed = GPIO_Speed_100MHz;
    GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_NOPULL;
    GPIO_WriteBit(GPIOE, GPIO_Pin_0|GPIO_Pin_1|GPIO_Pin_2|GPIO_Pin_3|GPIO_Pin_4|GPIO_Pin_5|GPIO_Pin_6|GPIO_Pin_7 , Bit_SET);
  
但是测出来这几个端口都是低电平啊,不知道是哪里出错了

使用特权

评论回复
7
zhenykun| | 2021-1-11 23:19 | 只看该作者

GPIO_PuPd_NOPULL
是不带上拉的吧

使用特权

评论回复
8
zhenykun| | 2021-1-11 23:21 | 只看该作者
对,你试一下带上拉

使用特权

评论回复
9
yszong| | 2021-1-11 23:23 | 只看该作者

:)
        GPIO_InitStructure.GPIO_Pin =         GPIO_Pin_0|GPIO_Pin_1|GPIO_Pin_15;
  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_OUT;
  GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;
  GPIO_InitStructure.GPIO_Speed = GPIO_Speed_100MHz;
  GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_NOPULL;
  GPIO_Init(GPIOA, &GPIO_InitStructure);        
我的设置,他这样设置一样的;
我负载接电阻串LED,到地;可以正常工作;

使用特权

评论回复
10
dengdc| | 2021-1-11 23:26 | 只看该作者

#define RUN_LED_ON              GPIOA->BSRRL = GPIO_Pin_15
#define RUN_LED_OFF             GPIOA->BSRRH = GPIO_Pin_15
用BSRRL和BSRRH 指令试下;

使用特权

评论回复
11
shimx| | 2021-1-11 23:28 | 只看该作者
你这样做,是在说他的库有问题了,库函数置高有问题?

使用特权

评论回复
12
shimx| | 2021-1-11 23:30 | 只看该作者
如果一个引脚悬空,没有上拉,用表能测量出高电平吗

使用特权

评论回复
13
jiaxw| | 2021-1-11 23:32 | 只看该作者
我要崩溃了,犯得错误让我想自杀啊。我没有调用GPIO_Init啊啊啊啊啊。谢各位帮助了,自己太不细心了

使用特权

评论回复
14
liliang9554| | 2021-1-11 23:34 | 只看该作者
我现在碰到了这个问题。。。我用了GPIO_init()函数,也不行!!!!!!!!!
void gpio_init_pd(){
       GPIO_InitTypeDef GPIO_INITSTURE;
        
     //   GPIO_DeInit( GPIOA);
               
          RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOA, ENABLE); //使能GPIOA_H的io引脚时钟。
        
          GPIO_INITSTURE.GPIO_Pin =  gpio_a;      //设定串口的初始化管脚
        
          GPIO_INITSTURE.GPIO_Mode = GPIO_Mode_OUT;//设定管脚的模式,高速,低速,还是其他
        
         GPIO_INITSTURE.GPIO_Speed = GPIO_Speed_100MHz;  //管脚速率速度 ;
         
         GPIO_INITSTURE.GPIO_OType = GPIO_OType_PP; //输出模式
        
         GPIO_INITSTURE.GPIO_PuPd = GPIO_PuPd_NOPULL; //是否内拉高;
        
        GPIO_Init(GPIOA,&GPIO_INITSTURE);   //pin口初始化

        // GPIO_WriteBit(GPIOA,1,Bit_RESET);//set low

     printf("gpid e init \n");
}

使用特权

评论回复
15
zyf部长|  楼主 | 2021-1-11 23:38 | 只看该作者
我按大家的说法挨个排查一下,先结贴啦,谢谢哈

使用特权

评论回复
16
wowu| | 2021-2-3 23:31 | 只看该作者
通过什么通讯方式啊

使用特权

评论回复
17
xiaoqizi| | 2021-2-3 23:34 | 只看该作者
悬空的引脚是什么电平啊

使用特权

评论回复
18
木木guainv| | 2021-2-3 23:38 | 只看该作者
额 很少有人不初始化io口的啊

使用特权

评论回复
19
磨砂| | 2021-2-3 23:41 | 只看该作者
你在前边不是已经初始化了吗

使用特权

评论回复
20
晓伍| | 2021-2-3 23:44 | 只看该作者
库应该是没有问题的

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

694

主题

7102

帖子

8

粉丝