OpenEdv-开源电子网

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

STM32L151C8T6 遥控器点动的问题

[复制链接]

74

主题

182

帖子

0

精华

高级会员

Rank: 4

积分
588
金钱
588
注册时间
2014-10-15
在线时间
137 小时
发表于 2019-8-9 16:27:20 | 显示全部楼层 |阅读模式
1金钱

有两个板卡。一个主板,一个遥控器。

遥控器有一个按键,一个指示灯,一个蓝牙主模块。

主板有一个蓝牙从模块。

按下按键,通过蓝牙发送指令给主板,让主板上一个IO口输出高电平,一直按一直输出高电平,同时指示灯亮。

松开,再发另外一条指令,让主板该IO口输出低电平,同时指示灯灭。

现在测试,按下一切正常,可是松开的时候时灵时不灵。

就是松开时,有时主板IO口不能输出低电平,同时指示灯不灭。

代码如下:

初始化:

GPIO_InitStruct.Pin = XJIN_Pin|SJIN_Pin|KDOWN_Pin|XSONG_Pin
                          |SSONG_Pin;
  GPIO_InitStruct.Mode = GPIO_MODE_IT_RISING;
  GPIO_InitStruct.Pull = GPIO_NOPULL;
  HAL_GPIO_Init(GPIOB, &GPIO_InitStruct);

。。。。。。。。。。。。。。。。。。。。。。。

HAL_NVIC_SetPriority(EXTI9_5_IRQn, 2, 0);
  HAL_NVIC_EnableIRQ(EXTI9_5_IRQn);
。。。。。。。。。。。。。。。。。。。。。

外部中断程序:

if(GPIO_Pin==SSONG_Pin)
{
if(SSongFlag==0)
{

HAL_UART_Transmit (&huart1 ,(uint8_t *)(SSONG),SEND_CONST,500);
HAL_GPIO_WritePin(GPIOA, LED_Pin, GPIO_PIN_RESET);
GPIO_InitStruct.Pin = SSONG_Pin;
GPIO_InitStruct.Mode = GPIO_MODE_IT_RISING;
GPIO_InitStruct.Pull = GPIO_NOPULL;
HAL_GPIO_Init(GPIOB, &GPIO_InitStruct);
SSongFlag=1;
}
else
{
HAL_UART_Transmit (&huart1 ,(uint8_t *)(SSONG0),SEND_CONST,500);
HAL_GPIO_WritePin(GPIOA, LED_Pin, GPIO_PIN_SET);
GPIO_InitStruct.Pin = SSONG_Pin;
GPIO_InitStruct.Mode = GPIO_MODE_IT_FALLING;
GPIO_InitStruct.Pull = GPIO_NOPULL;
HAL_GPIO_Init(GPIOB, &GPIO_InitStruct);
SSongFlag=0;
}
}
就是先初始化外部中断口下降沿中断,检测到下降沿发命令,灯亮,重新初始化检测上升沿。

检测到上升沿中断,发命令,灯灭,再次初始化检测下降沿。

请高手指教,哪里有问题?谢谢


正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

74

主题

182

帖子

0

精华

高级会员

Rank: 4

积分
588
金钱
588
注册时间
2014-10-15
在线时间
137 小时
 楼主| 发表于 2019-8-9 17:05:57 | 显示全部楼层
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-6-5 12:49

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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