|
官方提供的BSP例程是通过按键轮流执行各个demo模块,操作起来不方便。本实验是通过触摸菜单来随意选择demo模块,操作起来就方便多了。 在BSP例程中,获得触摸坐标值是通过触摸中断标志和结构体返回的,对应的代码如下:8 f1 h7 w. k" v8 z6 `0 k ( Q3 R$ W8 m! x) ~9 R9 u( T* [, m if (TouchDetected == SET) //触摸信号处理 {( M( a, a, Q! B6 T T+ A6 D TouchDetected = RESET;" e/ N- c/ D6 j1 @( k if (BSP_TS_Get_MultiTouchState(0, &TsMultipleState) != BSP_ERROR_NONE), V7 l' u# P- |( z {, B Y7 N1 |6 h' u g$ m1 E Error_Handler(); }- O z6 m! j! o5 k tou_x = TsMultipleState.TouchX[0];2 ]# ^( H" r3 f2 P8 S tou_y = TsMultipleState.TouchY[0]; 获得当次触摸坐标后,就可以通过菜单项显示的位置来确定当前触摸的菜单项,代码如下:8 x. K b3 ~$ q& R- g& ^, O0 [ now_option = (tou_y -50)/24; //根据触摸位置确定菜单选项 解决了触摸菜单项的选择之后,启用对应的demo就简单了,我是直接用switch语句,直观方便: y7 N& Q r& S1 ]9 `4 H ) c& P! w3 X8 ?; f4 H3 c switch(now_option){8 l6 y2 n% w4 ? case 1: Led_demo(); break;) H% |* P* ~9 w$ r$ Q2 ^ case 2:) y9 b0 ]4 c3 l1 y& t7 b Touchscreen_demo();; m! V6 v: O/ A: Q+ f r2 v break;0 g( H2 V7 }! m* R+ Q/ s case 3:9 k1 t! v3 j v- a& @: H" d" i AudioPlay_demo();" s5 S/ s, d: R% q8 L; z break; case 4: AudioRecord_demo(); break;* V+ ^% c) J" V) D2 @) \6 c case 5: MotionSensor_demo();/ k/ l! \& z3 b. k- c8 X+ i break;7 G) l! m# B- `% I& R1 d. z case 6: SD_demo(); break; case 7: _# W# J( c1 z/ _2 i$ V; C OSPI_NOR_demo(); }& p; a/ _+ |# E4 T; b, h 3 \; k2 Y8 E3 u' c 这是对应的菜单选项:
这是执行的界面:
这是完整的代码截图:: {* g- b' W6 z' U. X5 ]: V' ]
|
【STM32C5教程】(9)DAC 模拟量信号输出实验
STM32C543RC开发板Stop、Sleep和standby模式测试
【STM32C5教程】(10)LPUART DMA 通信实验
【STM32C5教程】(8)ADC 模拟量数据采集实验
【STM32C5教程】(7)TIM1 互补 PWM 输出实验
【STM32C5教程】(6)定时器 PWM 输出实验
【STM32C5教程】(5)定时器周期中断实验
【STM32C5教程】(4)GPIO 外部中断实验
【STM32C5教程】(3)GPIO 按键输入实验
实战经验 | 如何将全部代码放在SRAM中运行
微信公众号
手机版