RA6touch
电容按键连接到 P708,即 CTSU 单元 1 的通道 TS12。充电电容的阻值为 680 欧姆,电阻的大小决定了电容按键充电的时间。
板载LED有3个,分别连接到P400、P403、P404。
双击 confifigura tion.xml 打开配置界面:然后点开依次点击 Stacks -> New Stack -> CapTouch ->
TOUCH 来配置 CTSU 模块。
Renesas Views -> Renesas QE -> CapTouch Main (QE)。
1. To Select a Project 选择项目:
2. To Prepare a Confifiguration 准备配置:
Touch Sensor 选择电容按键,Resistance[ohm] 选择电容按键的电阻值。
链接J-Link ,我们点击 Start Tuning 开始调试。
点击 Output Parameter Files 输出参数文件,生成配置好的文件
点击 Show Sample 这里面有电容按键的示例代码,之后我们点击 Output to a File,它会在qe_gen 文件夹里生成 qe_touch_sample.c 。qe_touch_sample.c 文件里编写我们需要的代码。
- #include "hal_data.h"
- #include "qe_touch_config.h"
- FSP_CPP_HEADER
- void R_BSP_WARMStart(bsp_warm_start_event_t event);
- FSP_CPP_FOOTER
- /*******************************************************************************************************************//**
- * main() is generated by the RA Configuration editor and is used to generate threads if an RTOS is used. This function
- * is called by main() when no RTOS is used.
- **********************************************************************************************************************/
- void hal_entry(void)
- {
- /* TODO: add your own code here */
- qe_touch_main();
- #if BSP_TZ_SECURE_BUILD
- /* Enter non-secure code */
- R_BSP_NonSecureEnter();
- #endif
- }
- /*******************************************************************************************************************//**
- * This function is called at various points during the startup process. This implementation uses the event that is
- * called right before main() to set up the pins.
- *
- * @param[in] event Where at in the start up process the code is currently at
- **********************************************************************************************************************/
- void R_BSP_WarmStart(bsp_warm_start_event_t event)
- {
- if (BSP_WARM_START_RESET == event)
- {
- #if BSP_FEATURE_FLASH_LP_VERSION != 0
- /* Enable reading from data flash. */
- R_FACI_LP->DFLCTL = 1U;
- /* Would normally have to wait tDSTOP(6us) for data flash recovery. Placing the enable here, before clock and
- * C runtime initialization, should negate the need for a delay since the initialization will typically take more than 6us. */
- #endif
- }
- if (BSP_WARM_START_POST_C == event)
- {
- /* C runtime environment and system clocks are setup. */
- /* Configure pins. */
- R_IOPORT_Open (&g_ioport_ctrl, g_ioport.p_cfg);
- }
- }
- #if BSP_TZ_SECURE_BUILD
- BSP_CMSE_NONSECURE_ENTRY void template_nonsecure_callable ();
- /* Trustzone Secure Projects require at least one nonsecure callable function in order to build (Remove this if it is not required to build). */
- BSP_CMSE_NONSECURE_ENTRY void template_nonsecure_callable ()
- {
- }
- #endif
复制代码
- /***********************************************************************
- *
- * FILE : qe_sample_main.c
- * DATE : 2022-02-14
- * DESCRIPTION : Main Program for RA
- *
- * NOTE:THIS IS A TYPICAL EXAMPLE.
- *
- ***********************************************************************/
- #include "qe_touch_config.h"
- #define TOUCH_SCAN_INTERVAL_EXAMPLE (20) /* milliseconds */
- void qe_touch_main(void);
- uint64_t button_status;
- #if (TOUCH_CFG_NUM_SLIDERS != 0)
- uint16_t slider_position[TOUCH_CFG_NUM_SLIDERS];
- #endif
- #if (TOUCH_CFG_NUM_WHEELS != 0)
- uint16_t wheel_position[TOUCH_CFG_NUM_WHEELS];
- #endif
- void qe_touch_main(void)
- {
- fsp_err_t err;
- /* Open Touch middleware */
- err = RM_TOUCH_Open(g_qe_touch_instance_config01.p_ctrl, g_qe_touch_instance_config01.p_cfg);
- if (FSP_SUCCESS != err)
- {
- while (true) {}
- }
- /* Main loop */
- while (true)
- {
- /* for [CONFIG01] configuration */
- err = RM_TOUCH_ScanStart(g_qe_touch_instance_config01.p_ctrl);
- if (FSP_SUCCESS != err)
- {
- while (true) {}
- }
- while (0 == g_qe_touch_flag) {}
- g_qe_touch_flag = 0;
- err = RM_TOUCH_DataGet(g_qe_touch_instance_config01.p_ctrl, &button_status, NULL, NULL);
- if (FSP_SUCCESS == err)
- {
- /* TODO: Add your own code here. */
- if(button_status==1)
- {
- err = R_IOPORT_PinWrite(&g_ioport_ctrl, BSP_IO_PORT_04_PIN_00, BSP_IO_LEVEL_LOW);
- err = R_IOPORT_PinWrite(&g_ioport_ctrl, BSP_IO_PORT_04_PIN_03, BSP_IO_LEVEL_LOW);
- err = R_IOPORT_PinWrite(&g_ioport_ctrl, BSP_IO_PORT_04_PIN_04, BSP_IO_LEVEL_LOW);
- }
- else
- {
- err = R_IOPORT_PinWrite(&g_ioport_ctrl, BSP_IO_PORT_04_PIN_00, BSP_IO_LEVEL_HIGH);
- err = R_IOPORT_PinWrite(&g_ioport_ctrl, BSP_IO_PORT_04_PIN_03, BSP_IO_LEVEL_HIGH);
- err = R_IOPORT_PinWrite(&g_ioport_ctrl, BSP_IO_PORT_04_PIN_04, BSP_IO_LEVEL_HIGH);
- }
- }
- /* FIXME: Since this is a temporary process, so re-create a waiting process yourself. */
- R_BSP_SoftwareDelay(TOUCH_SCAN_INTERVAL_EXAMPLE, BSP_DELAY_UNITS_MILLISECONDS);
- }
- }
复制代码
0
|
|
|
|