|
官方提供的BSP例程是通过按键轮流执行各个demo模块,操作起来不方便。本实验是通过触摸菜单来随意选择demo模块,操作起来就方便多了。 u' B1 s) K; k) w 5 b' F0 s/ u) p& N# U 在BSP例程中,获得触摸坐标值是通过触摸中断标志和结构体返回的,对应的代码如下: $ Y5 s& Y8 q- ~+ C if (TouchDetected == SET) //触摸信号处理 { TouchDetected = RESET; ) m4 F* k, Y) y6 j* A% O! \& K/ D, i if (BSP_TS_Get_MultiTouchState(0, &TsMultipleState) != BSP_ERROR_NONE)" m8 i" r, i( ^" o e4 K, A3 n! T { Error_Handler();3 t; u: X) u, b6 c2 y0 h }+ q" |: K* w0 w/ o: { tou_x = TsMultipleState.TouchX[0];4 k8 L1 O3 |* D& a tou_y = TsMultipleState.TouchY[0];. y. h( r$ I5 B2 p 获得当次触摸坐标后,就可以通过菜单项显示的位置来确定当前触摸的菜单项,代码如下: now_option = (tou_y -50)/24; //根据触摸位置确定菜单选项3 [6 T9 e9 t0 K0 O/ F7 ? 解决了触摸菜单项的选择之后,启用对应的demo就简单了,我是直接用switch语句,直观方便: switch(now_option){ case 1:4 R6 {5 C2 n- }. X7 |% C) p( G Led_demo();2 f( s2 j; k: C1 t; T$ r4 R+ } break;$ k; n- B# s& X/ d8 J) z5 u case 2: Touchscreen_demo();6 P4 \* q/ d8 n) W- y6 E! q break;1 X) R( a( T6 C5 o case 3: d# C4 p+ A& a* y+ y' W, Z4 L AudioPlay_demo(); break; case 4:4 H: e0 e" e" n( \8 J7 e3 j AudioRecord_demo(); break; case 5: MotionSensor_demo(); break;. l( r- D/ p, S0 ^$ ^7 H' r case 6:0 N; d1 {% n7 Y" H$ {) ^ SD_demo();! m, F' S! }6 b' _( k break;) x" t7 E8 g- U6 \ j case 7:. S8 {' u2 Y3 C/ n7 k OSPI_NOR_demo();) ?( X0 o; C/ |- R1 o }4 [7 ~( j# O, Z( a% l 这是对应的菜单选项:# R# A8 V2 n3 d2 ]9 w, ^5 z
& K; Q, z: n2 c4 j' ^; Z 这是执行的界面:6 o* v9 M9 V2 F# R7 ]- j
; s& K$ B' M _8 l3 T 这是完整的代码截图:. {/ c" C0 b! l F9 I- x& r
( g3 l- Y8 O! M, S* Y |
STM32C543RC开发板Stop、Sleep和standby模式测试
【STM32C5教程】(10)LPUART DMA 通信实验
【STM32C5教程】(9)DAC 模拟量信号输出实验
【STM32C5教程】(8)ADC 模拟量数据采集实验
【STM32C5教程】(7)TIM1 互补 PWM 输出实验
【STM32C5教程】(6)定时器 PWM 输出实验
【STM32C5教程】(5)定时器周期中断实验
【STM32C5教程】(4)GPIO 外部中断实验
【STM32C5教程】(3)GPIO 按键输入实验
实战经验 | 如何将全部代码放在SRAM中运行
微信公众号
手机版