这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界» 论坛首页» 企业专区» TI» 【玩转TIMSPM0】课程3任务1:学习以及作业完成情况

共2条 1/1 1 跳转至

【玩转TIMSPM0】课程3任务1:学习以及作业完成情况

高工
2024-05-05 22:11:29 打赏

课程3时进一步的进阶学习。

第一部分

加入了蜂鸣器的使用,按键增加蜂鸣器的音效。这一步最终需要实现的是通过按键按下后增加蜂鸣器的音效,并使数码管增加数值,由于课程2中使用延时的方法采集按键状态,效果不太理想,我们在这节课程中使用外部中断采集。

在之前的S2配置中加入下降沿触发中断:

1.png

增加的新模块是蜂鸣器模块:

2.png

它可以直接通过高低电平控制,课程中选取了PA15进行控制,依然通过配置文件初始化。

如何时间功能呢:

void GROUP1_IRQHandler(void) { switch (DL_GPIO_getPendingInterrupt(GPIO_S2_PORT)) { case GPIO_S2_PIN_14_IIDX: Dutytmp++; keyflag = 1; break; default: break; } }

通过按键中断程序里面直接对显示的数据Dutytmp进行增加,按下只能触发一次,中断方式还是比较好的,论坛大佬的方法还是不错的。将标志位置位后,在定时器中断中进行蜂鸣器响的时间控制:

void TIMER_0_INST_IRQHandler(void){ switch (DL_TimerG_getPendingInterrupt(TIMER_0_INST)) { case DL_TIMER_IIDX_ZERO: if(keyflag == 1){ keyflag++; DL_GPIO_clearPins(GPIO_Buzzer_PORT, GPIO_Buzzer_PIN_15_PIN); } else if(keyflag > 1){ keyflag = 0; DL_GPIO_setPins(GPIO_Buzzer_PORT, GPIO_Buzzer_PIN_15_PIN); } break; default: break; } }

第二部分

通过数码管显示温度,课程中是通过热敏电阻来反馈温度变化的,板载了一颗热敏电阻,这里用到的主要是adc采集部分:

3.png

ADC采集连接的是PA15,看样子上一部分刚用的引脚就要换一下了,蜂鸣器控制切换到PA16,然后进行ADC采集的配置:

4.png

通过定时器定时100ms'采集转化一次ADC的值,初始化时通过DL_ADC12_startConversion(ADC12_0_INST);开启转换。

第三部分与课后作业

课程是通过ADC采集的数值进行的温度转换实现的温度报警器功能,在第二部分已经实现了ADC的采集,所以这一部分主要是进行转换判断,这次就跳过直接实现DS18B20的采集,然后判断温度值进行报警功的实现。

DS18B20是一个单总线通信的温度传感器,我们通过一个引脚就能实现数据的读取,这里面我们使用论坛网友提供的DS18B20的驱动进行采集,在定时器中,每100ms采集一次。代码如下:

void TIMER_0_INST_IRQHandler(void){ switch (DL_TimerG_getPendingInterrupt(TIMER_0_INST)) { case DL_TIMER_IIDX_ZERO: Dutytmp = DS18B20_GetTemp(); if(keyflag == 1){ keyflag++; DL_GPIO_clearPins(GPIO_Buzzer_PORT, GPIO_Buzzer_PIN_16_PIN); } else if(keyflag > 1){ keyflag = 0; DL_GPIO_setPins(GPIO_Buzzer_PORT, GPIO_Buzzer_PIN_16_PIN); } if(Dutytmp > 300){ DL_GPIO_clearPins(GPIO_Buzzer_PORT, GPIO_Buzzer_PIN_16_PIN); } else DL_GPIO_setPins(GPIO_Buzzer_PORT, GPIO_Buzzer_PIN_16_PIN); break; default: break; } }

为了能够显示小数,我们弄了一个标志位代表小数位数,对于数码管来说小数点就相当于对现实数据&0x7f,最高位为0就可以点亮,超过30℃的报警器完成。





关键词: 玩转TIMSPM0 课程3 任务1

专家
2024-05-06 06:16:48 打赏
2楼

学习一下


共2条 1/1 1 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册]