开关基本参数
  • 产地
  • 无锡
  • 品牌
  • 无锡斯茂科技
  • 型号
  • 普通
  • 是否定制
开关企业商机

    函数和voidHAL_GPIO_EXTI_Callback(uint16_tGPIO_Pin)都不使用,把他们实现的服务函数还有中断标志位操作全都直接写在AL_GPIO_EXTI_IRQHandler(GPIO_PIN);函数中,这个也就是我后面的一个方法。回调函数中想要实现,可以采用这个方法voidHAL_GPIO_EXTI_Callback(uint16_tGPIO_Pin){/*Preventunusedargument(s)compilationwarning*/UNUSED(GPIO_Pin);if(GPIO_Pin==A_Pin)//A下降沿触发外部中断{//printf("A下降沿触发\r\n");HAL_TIM_Base_Start_IT(&htim2);//开始TIM2定时器B_last=HAL_GPIO_ReadPin(GPIOE,GPIO_PIN_14);//记录此状态的B状态while(TIM2_flag<=60)//定时器一个周期1ms,计时20ms内看看B有没有电跳变{//printf("等待B的触发\r\n");if(HAL_GPIO_ReadPin(GPIOE,GPIO_PIN_14)!=B_last)//在20ms内,检测到电平变化{//printf("B下降沿触发\r\n");HAL_TIM_Base_Stop_IT(&htim2);//printf("TIM2定时器关闭\r\n")。 常州旋转开关质量哪家好,欢迎咨询无锡斯茂科技有限公司。常州编码开关编程

   旋转编码开关EC11的C语言代码:#defineEncoderAP01#defineEncoderBP02//A,B两个引脚uint8time_cnt=0;//用于记录次数uint8input_status=0;//输入的状态uint8input_status0=0;//用于记录上一次初始状态uint8pulse0=0;//记录正旋转的状态次数uint8pulse1=0;//记录反旋转的状态次数uint8scanf_status=0;//获取到的状态uint8fun_one=0;//判断函数是否次执行//125usvoidEC11_Key_Detect(void){if(++time_cnt<=3){return;}time_cnt=0;//每500us进入一次判断A、B引脚有无电平变化if(EncoderA){if(EncoderB){//状态1input_status=1;//A=1;B=1}elseif(!EncoderB){//状态4input_status=4;//A=1;B=0}}elseif(!EncoderA){if(EncoderB){//状态2input_status=2;//A=0;B=1}elseif(!EncoderB){//状态3input_status=3;//A=0;B=0}}//通过判断两个状态是否相等来判断状态确实有变化(类似于按键消抖过程)if(input_status==input_status0){//如果次执行该函数if(fun_one==0){fun_one=1;scanf_status=input_status;}input_status0=input_status;//如果状态为1因为开关旋转后电平会停在1状态,在此执行所需要的东西if(scanf_status==1){//正旋转了一个周期if(pulse0>=4){pulse0=0。

  合肥旋转编码开关定制江苏旋转编码开关质量哪家好,欢迎来电咨询,无锡斯茂科技有限公司。

   elseRead_Switch[0]|=0x4000;if(P35)Read_Switch[0]&=0xFBFF;elseRead_Switch[0]|=0x400;if(P36)Read_Switch[0]&=0xFFBF;elseRead_Switch[0]|=0x40;if(P37)Read_Switch[0]&=0xFFFB;elseRead_Switch[0]|=0x4;P17=1;//读取完成时重新拉高D2,以备下一次的读取}else{P17=0;//拉低D2}break;case4://操作D3if(R_W)//决定是去拉低D3的电平,还是去读取W4的状态{//读取D3状态并写入暂存寄存器if(P33)Read_Switch[0]&=0x7FFF;elseRead_Switch[0]|=0x8000;if(P35)Read_Switch[0]&=0xF7FF;elseRead_Switch[0]|=0x800;if(P36)Read_Switch[0]&=0xFF7F;elseRead_Switch[0]|=0x80;if(P37)Read_Switch[0]&=0xFFF7;elseRead_Switch[0]|=0x8;P32=1;//读取完成时重新拉高D3,以备下一次的读取}else{P32=0;//拉低D3}break;}savetime=0;//5ms定时时间到后的操作完成,等待下一次5ms定时reachtime=0;//重置定时标志R_W=~R_W;//拉低D0-D3或读取W1-W4标志转换if(!R_W)switch_bite++;//D0-D3循环if(switch_bite>4)//D0-D3全部读取完成进行数据处理,把十六进制值转换为我们设置的十进制值{switch_bite=1;Read_Switch_Dec[0]=0;turnchartmp[0]=Read_Switch[0];for。

   触发就要有操作的,而不是等着。虽然可以设计进去超时函数让编码器跳出,但是还是没有办法实现实际项目的需要。于是准备直接写到中断回调函数中。中断回调函数中实现按理说直接写到中断回调函数应该挺容易的,直接改就行了,逻辑反正是通的,但是遇到了几个问题,一个是延时消抖的问题。HAL_Delay本质也是一个中断服务函数,这种延时函数中断的嵌套是非常危险的操作,很容易卡死程序,比较有隐患,所以HAL_Delay函数是不能用了。同时,因为回调函数是这样来使用的voidEXTI15_10_IRQHandler(void)中检测到外部中断,调用HAL_GPIO_EXTI_IRQHandler(GPIO_PIN);函数,然后再调用里面的回调函数voidHAL_GPIO_EXTI_Callback(uint16_tGPIO_Pin)。我们这个里面用到了两个外部中断,PE13和PE14,也就是都会使用同一个回调函数,也就是无法完成这种操作if(GPIO_Pin==A_Pin)//A下降沿触发外部中断{if(GPIO_Pin==B_Pin){}}这里就是举了个例子,因为回调函数的调用逻辑,没有办法在检测了A信号触发后在操作里面检测B信号的触发。这是做不到的,这是回调函数限制了操作。为了避免这种,好的方法还是直接写在voidEXTI15_10_IRQHandler(void)函数中,HAL_GPIO_EXTI_IRQHandler(GPIO_PIN)。杭州旋转编码开关质量哪家好,欢迎来电咨询,无锡斯茂科技有限公司。

   怎样寻找开关的替代料开关是每个电路和商用电子产品中常见的物料之一。它们的形状、大小和功能各不相同,却是用于断开或闭合电路的必要元件。问题是,开关中都含有可移动的机械零件,这些机械零件会磨损、弯曲和断裂。没有了功能良好的开关,你的电路,甚至可能你的整个设备都会停止工作。我们团队中的每位成员都接到过这样的电话,称“我店里的真空吸尘器开关坏了。你们这儿有吗?”大部分情况下,只要我们能找到开关的规格,就可以找到符合客户需求的开关。本帖将介绍我们的技术人员和工程师在帮助客户寻找所需开关的具体步骤,也供大家参考。首先,我们需要确定所需开关的类型。由于Digi-Key拥有很多种开关和配件,因此如果你不熟悉相关术语,那可能会有些困难。解决这以问题,可以参阅以下的资料:Digi-Key不同种类开关和配件如果你不了解这些开关,我的同事Pat写了一篇开关教程,可帮助你辨别这些开关的类型和功能。,我打算简单介绍我们处理的常见的开关之一——摇臂开关。虽然我主要介绍的是这种开关,但你会发现,我在缩小所需规格范围时所使用的方法与我寻找拨动开关或按钮开关时所使用的步骤大体相同。 是摇臂开关就有超过几千个不同的选项。迷你旋转编码开关质量哪家好,欢迎来电咨询,无锡斯茂科技有限公司。苏州防水旋转编码开关方向

上海SM SWITCH数字拨码开关质量哪家好,欢迎咨询无锡斯茂科技有限公司。常州编码开关编程

   而是只使用了中断产生的标注为来作为判断。这个的设计思路主要是,A信号中断,消抖,确定A信号下降沿触发,打开定时器,10ms检测B信号是否上/下降沿触发,关闭定时器,判断B信号的电平高低。软件设计流程图如下在函数中实际代码如下///****************旋转编码开关,版本2*****************************/////返回值1正转////返回值2反转uint8_tEC11Direction_2(void){charDirection_flag=0;while(1){if(A_flag==1)//A下降沿触发外部中断{HAL_Delay(1);//延时消抖if(HAL_GPIO_ReadPin(GPIOE,GPIO_PIN_13)==0)//A下降沿触发1ms后判断是否稳定在了低电平{HAL_TIM_Base_Start_IT(&htim2);//开启定时器while(TIM2_flag<=10)//定时器的一个周期是1ms,这里是10ms{if(B_flag==1)//10ms内检测是不是有B上/下降沿触发{TIM2_flag=0;//定时器中断标志位HAL_TIM_Base_Stop_IT(&htim2);//检测到B了直接关闭定时器HAL_Delay(1);//延时消抖if(HAL_GPIO_ReadPin(GPIOE,GPIO_PIN_14)==1)//判断Pin_14的电平,返回旋转方向{//printf("A\r\n");Direction_flag=1;break;}elseif(HAL_GPIO_ReadPin(GPIOE,GPIO_PIN_14)==0){//printf("B\r\n");Direction_flag=2;break。常州编码开关编程

无锡斯茂科技有限公司为SM Switch中国子公司,公司成立于1995年,从事开关业近有20多年,我司以较高的品质,优良的环境,以及适合的价格服务于每一家客户。公司已获得ISO 9001, ISO 14001 等多项认证,遵守国内外安全标准。我司旋转编码开关均可以满足IP67 防水,并且有精美的外观,可供不同层次的客户选择。我们的产品适用于多种领域,包含工业控制,医疗器械,智能控制,通讯设备等。我们研发技术力能够满足不同顾客的各项要求,针对客户的要求进行产品研发。以品质保证为基础,为每一位客户提供 完美的服务。

与开关相关的文章
与开关相关的产品
与开关相关的资讯
与开关相关的**
产品推荐
相关资讯
信息来源于互联网 本站不为信息真实性负责