很高兴能在面包板社区申请到UFUN的开发板,但因为近期时间紧张,所以今天才调通整个板子。好在Keil的软件界面比较类似,利用前期的例程+UFUN开发板的各种硬件资源,开始了调试开发。
总体方案:
利用触摸按键,来选择各种声音,使蜂鸣器发出不同类型的声音。
设计模块:
1. 触摸识别部分:采用程序轮询方式(为了方便程序设计,没有采用中断),检测按键是否按下,高电平时,设置UpFlag=1(或DownFlag);主循环结束时清零;
2. 程序选择部分:设置全局变量SongSwitch,初值设定,根据触摸识别,进行累加SongSwitch++,根据总的歌曲数量,采用求余SongSwitch%SongTotal方法来选择声音类型。
查看板子原理图,需要用到引脚及功能如下列举:
· 触摸按键:KEY0 (向右)-PC5; KEY1 向上-PC4; KEY2(向左) -PB3; KEY2(向下)-PB4。配置为浮空输入模式,查询到高电平则有按键按下。(也可以开启外部中断,边沿检测更为准确)
对于触摸按键的检测,使用了专用芯片TTP224,专门的4按键检测芯片,这样就减少了软件的工作量,对于抖动检测、灵敏度设置等都可以通过硬件来调整。
函数主程序如下:
1. intmain(void)
2. {
3. /* MCU Configuration Init */
4. /* Reset of all peripherals, Initializes the Flash interface and theSystick. */
5. HAL_Init();
6. /* Configure the system clock */
7. SystemClock_Config();
8. /* Initialize all configured peripherals */
9. MX_GPIO_Init();
10. MX_TIM1_Init();
11. MX_USART1_UART_Init();
12. MX_TIM2_Init();
13. RS232_Init();
14. BEE_Init();
15. /*USER CODE BEGIN WHILE */
16. while (1)
17. {
18. // key up detect
19. KeyUp();
20. // key down detect
21. KeyDown();
22. // Bee Song Select
23. BeeSongSelect();
24. }
25. }
26.
使用感受:
1. UFUN板子功能多,包括:触摸检测、ADC、RS232、存储卡等,具体可以看说明;
2. 当然每一类功能数量有限,但对于初学者可以熟悉各类功能开发,从不了解到知道这个功能,是质变的;
3. 后续增加各种功能的数量,只是量变了,如果不是太多数量,很容易扩展到非常强大的功能;
4. 当然数量多到一定程度,要注意质变了,系统不一定支持这么多了;
5. 这块板子精通了,平时的各种应用场合一般都可以对付,当然对于特殊需求,还需要额外考虑。
后续,
1. 计划扩展串口通讯功能,这样可以外接显示设备,显示板子工作状态;
2. 调试ADC采集功能,采样精度和频率测试。
最后,感谢面包板社区提供交流的平台、感谢张近东先生提供开发板!