This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

[参考译文] TM4C129XNCZAD:使用滑块从 LCD 设置电压时出现问题

Guru**** 2394305 points


请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/648971/tm4c129xnczad-problem-in-setting-voltage-through-from-lcd-using-slider

器件型号:TM4C129XNCZAD

尊敬的所有人:

 我不知道如何在图形库中使用滑块、尽管我尝试从示例中获取它。 我的问题是从滑块获取值并将其传递到 DAC。 因此、我无法从滑块获取值。 onsliderchange 函数我不知道如何写入它。 请帮助。 我正在编写代码

#include "stdbool.h"
#include "stdint.h"
#include "gpio.h"
#include "rom_map.h"
#include "sysctl.h"
#include "inc/hw_memmap.h"
#include "pin_map.h"
#include "emac.h"
#include "SysTick .h"
#include "drivers/pinout.h"
#include "utils/ustdlib.h"
#include "driverlib/adc.h"
#include "math.h"
#include "driverlib/ssi.h"
#include "inc/tm4c129xncszad.h"
#include "grlib/grlib.h"
#include "grlib/widget.h"
#include "grlib/canvas.h"
#include "grlib/slider.h"
#include "drivers/frame.h"
#include "drivers/kentec320x240x16_ssd2119.h"
#include "drivers/sound.h"
#include "drivers/touch。h"
#include "driverlib/rom.h"
uint32_t ui32SysClock;
void PinoutSet (void);
void DisplayInitialize (void);
#define SYS_TICK 延迟10000
#define GPIO_PA2_SSI0CLK       0x0000080F
#define GPIO_PA3_SSI0FSS       0x00000C0F
#define GPIO_PA4_SSI0TX     0x0000100F
#define GPIO_PA5_SSI0RX     0x0000140F
void Touch_interface (void);

volatile uint32_t ui32Loop;
void OnSliderChange (tWidget * psWidget、int32_t i32Value);
void clrScreen (void);
void DisplayInitialize (void);
tContext sContext;
tRectangle sRect;
extern tCanWidget vasg_sBackground;
extern tSliderWidget g_psSliders;

画布(g_sHeading、&g_sBackground、0、&g_psSliders、
&g_sKentec320x240x16_SSD2119、0、0、320、23、
(canva_style_fill | canva_style_outline | canva_style_text)、
ClrBlack、ClrWhite、ClrRed、g_psFontCm20、"滑块控制"、 0、0);
画布(g_sBackground、widget_root、0、&g_sHeading、
&g_sKentec320x240x16_SSD2119、0、23、320、(240 - 23)、
canva_style_fill、ClrBlack、0、0、0、 0、0、0);
滑块(g_psSliders、&g_sHeading、0、0、
                &g_sKentec320x240x16_SSD2119、10、105、220、30、 0、100、25、
                (sl_style_fill | sl_style_BACKG_Fill | sl_style_Outline |
                 SL_style_text | SL_style_BACKG_text)、
                ClrGrey、ClrBlack、ClrSilver、ClrWhite、ClrWhite、
                G_psFontCm20、"25%"、0、0、OnSliderChange);
void SysTickIntHandler()

   /*-------- LwIP 定时器 ------------------------------------------------------- *


/*
void MT_SysTick 设置()

   SysTickPeriodSet ((((ui32SysClock / 1000000)* SYS_TICK 延迟)); //加载计数
   SysTickIntRegister (SysTickIntHandler); // int 处理程序寄存器
   SysTickIntEnable();            //启用 SysTick 中断
   SysTickEnable();               //启用 SysTick


*
无效
OnSliderChange (tWidget * psWidget、int32_t i32Value)



void DAC_LDAC ()

   /// LDAC 信号
   MAP_SysCtlPeripheralEnable (SYSCTL_Periph_GPIOB);
   MAP_GPIOPinTypeGPIOOutput (GPIO_PORTB_BASE、GPIO_PIN_5);
   MAP_GPIOPinWrite (GPIO_PORTB_BASE、GPIO_PIN_5、GPIO_PIN_5);
  //复位信号
   MAP_SysCtlPeripheralEnable (SYSCTL_Periph_GPIOF);
   MAP_GPIOPinTypeGPIOOutput (GPIO_PORTF_BASE、GPIO_PIN_3);
   MAP_GPIOPinWrite (GPIO_PORTF_BASE、GPIO_PIN_3、0);


int main (空)

   uint32_t pui32DataTx;
   volatile uint32_t ui32Loop;

   ui32SysClock = SysCtlClockFreqSet ((SYSCTL_XTAL_25MHz |SYSCTL_MAIN | SYSCTL_USE_PLL | SYSCTL_CFG_VCO_320)、
       2000000);
//    mt_SysTick _set ();
   DAC_LDAC ();
   DisplayInitialize();

   SysCtlPeripheralEnable (SYSCTL_Periph_SSI0);
   SysCtlPeripheralEnable (SYSCTL_Periph_GPIOA);
   GPIOPinConfigure (GPIO_PA2_SSI0CLK);
   GPIOPinConfigure (GPIO_PA3_SSI0FSS);
   GPIOPinConfigure (GPIO_PA4_SSI0TX);
   GPIOPinConfigure (GPIO_PA5_SSI0RX);
   GPIOPinTypeSSI (GPIO_Porta_base、GPIO_PIN_5 | GPIO_PIN_4 | GPIO_PIN_3 | GPIO_PIN_2);
   SSIConfigSetExpClk (SSI0_BASE、ui32SysClock、SSI_FRF_MOTO_MODE_3、
                       SSI_MODE_MASTER、10000、16);


   SSIEnable (SSI0_BASE);

   while (1)
       {

      // SysCtlDelay (10);
       MAP_GPIOPinWrite (GPIO_PORTF_BASE、GPIO_PIN_3、GPIO_PIN_3);
       MAP_GPIOPinWrite (GPIO_PORTB_BASE、GPIO_PIN_5、GPIO_PIN_5);//LDAC

       pui32DataTx=0xafff;
       SSIDataPut (SSI0_BASE、pui32DataTx);
               while (SSIBusy (SSI0_BASE))
                   {
                   }
               MAP_GPIOPinWrite (GPIO_PORTB_BASE、GPIO_PIN_5、0);
            //  SSIIntClear (SSI0_BASE、SSI_RXFF);
               SysCtlDelay (10);

               MAP_GPIOPinWrite (GPIO_PORTB_BASE、GPIO_PIN_5、GPIO_PIN_5);

       }


       }

空 clrScreen()

   sRect.i16XMin = 0;
   sRect.i16YMin = 0;
   sRect.i16XMax = 319;
   sRect.i16YMax = 239;
   GrContextForegroundSet (&sContext、ClrBlack);
   GrRectFill (&sContext、&sRect);
   格林图(&S);


void DisplayInitialize()

   Kentec320x240x16_SSD2119Init (ui32SysClock);
   GrContextInit (&sContext、&g_sKentec320x240x16_SSD2119);
   PinoutSet();
   TouchScreenInit (ui32SysClock);
   TouchScreenCallbackSet (WidgetPointerMessage);
   WidgetAdd (widget_root、(tWidget *)&g_sBackground);
   WidgetPaint (widget_root);
   clrScreen();



  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    [引用 user="gurpreet singh96">我不知道如何在图形库中使用滑块...  我的问题是从滑块获取值将其传递给 DAC[/QUERP]

    查看您的代码(与此处列出的其他代码相似)可以发现/明显地看到"Comment free"显示了函数"OnSliderChange()"-它是空的。   有些(可能有很多)在这里向您提供帮助-可能不熟悉"供应商图形库"。    因此,我们必须问您-是函数,"OnSliderChange()您的创建吗?   (该函数的空值表示为"您的创建"。)

    我搜索过-但找不到-"清晰列出的"滑块初始化"。    减去此类"已知和起始滑块值"-如何使用"OnSliderChange()"函数?   是否不需要"定期"读取"滑块位置"、然后(仅在那时) 将该"当前滑块数据"显示为"OnSliderChange()"进行处理和屏幕更新?

    公司或我都不使用供应商的图形库。   (我们打造了自己的-更好的适应能力、现代/高级显示屏。)    

    您注意到自己的"弱点"和"滑块"-但不揭示这种情况的原因。    "滑块"是否没有任何解释和/或详细说明?   如果是-您的搜索有多难/多长时间/重点?   (当您"组织和放松"他们的努力时、这对他人总是有帮助、这应该是您的目标...)

    您可以搜索图形库-关键字"slider"-搜索其"位置读取"(或类似描述)、该描述应为"经常被调用的函数"。   (滑块必须重复读取-以便(任何)滑块变化变为"可检测"-(现在)是否清除?

    你已经很好地确定了你的目标、"从滑块中获取价值"-我已经尝试在这个过程中为你提供指导。   您的报价结束时会"传递给 DAC"-它不包含(正确)详细信息和定义-让我无法理解...   ("正常"机械"滑块"是一个线性"电位计"-为 MCU 的 ADC 馈送信号。)   "此处的滑块"应该是屏幕绘制的( 虚拟?) -除非"滑块"是"始终输出电压(通过 DAC -限制其使用和有效性)、否则需要更多说明...   (我们使用此类"类似滑块"的函数(在我们自己的 gra lib 中)可根据寻址函数启用"DAC 驱动或"值设置"(不影响 DAC)、从而极大地扩展了实用程序!)

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    Thnx 我是在您的支持下完成的
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    对你来说很好!   (ET Mercî mon AMI。)

    然而、"适合许多人"是(部分)有关 "如何让滑块函数检测值"的描述(初始和后续)-然后是"测试滑块值的变化"。