ESP32读取光敏传感器数据 esp32传感器实验
转载
目录
目的与要求: 方法、步骤: 1.STM32 硬件的准备与连接 2.STM32 代码下载与调试
内容: 1.STM32 硬件的准备与连接(见图1) 2.STM32 代码下载与调试
结论: 定时器的工作原理: 掌握定时器库函数的使用:初始化TIM3 完成定时器程序编写:TIM3中断处理函数 掌握 定时器程序调试以及寄存器查看 :
目的与要求:1.理解定时器的工作原理。 2.掌握定时器库函数的使用。 3.完成定时器程序编写。 4.掌握定时器程序调试以及寄存器查看。
方法、步骤:1.STM32 硬件的准备与连接- 准备好 Plus 节点板。
- 将J-Link 仿真器与Plus 节点的STM32 调试口相连接,仿真器USB 端与电脑相连接。
- 将 12V 电源与 Plus 节点的电源接口相连接,连接后接通电源。
- 通过 RJ-45 线将 Plus 节点与传感器板相连,需要用到的传感器板在实验环境查看。(以采集类 传感器板为例)。
2.STM32 代码下载与调试- 打开实验代码中 06-Timer\Project 目录下的 TIMER.eww 工程。
- 使用IAR开发环境打开电子时钟实验程序并阅读readme文件。
- 编译代码。
- 将程序通过 J-Link 调试工具下载到 Plus 节点中,IAR 进入调试页面。
- 点击 IAR 的执行按钮(GO)执行程序,从 Plus 节点上查看实验现象:D3、D4灯一秒转换一次状态,且两灯的状态保持相反。
- 通过Watch窗口查看LED控制标志位led_status参数。在下图所示处打上断点,运行程序,经过1S后程序执行到断点处,观察到led_status状态由无变成’\0’(0x00)空值。
- 通过Register窗口查看TIM3的计数寄存器计数值。运行程序,执行到断点处,查到看TIM3_CNT数值变化:第一次执行CR1、SR、CNT、DMAR由0值分别变为0x0001、0x001E、0x02AF、0x0001。继续重复执行,CNT变为0x0FFA、0x0D08、0x0781、0x0D7C。
内容:1.STM32 硬件的准备与连接(见图1)- 准备好 Plus 节点板。
- 将J-Link 仿真器与Plus 节点的STM32 调试口相连接,仿真器USB 端与电脑相连接。
- 将 12V 电源与 Plus 节点的电源接口相连接,连接后接通电源。
- 通过 RJ-45 线将 Plus 节点与传感器板相连,需要用到的传感器板在实验环境查看。(以采集类 传感器板为例)。
2.STM32 代码下载与调试- 打开实验代码中 06-Timer\Project 目录下的 TIMER.eww 工程。
- 使用IAR开发环境打开电子时钟实验程序并阅读readme文件。
- 将程序通过 J-Link 调试工具下载到 Plus 节点中,IAR 进入调试页面。
- 点击 IAR 的执行按钮(GO)执行程序,从 Plus 节点上查看实验现象:D3、D4灯一秒转换一次状态,且两灯的状态保持相反。
- 通过Watch窗口查看LED控制标志位led_status参数。在下图所示处打上断点,运行程序,经过1S后程序执行到断点处,观察到led_status状态由无变成’\0’(0x00)空值。
- 通过Register窗口查看TIM3的计数寄存器计数值。运行程序,执行到断点处,查到看TIM3_CNT数值变化:第一次执行CR1、SR、CNT、DMAR由0值分别变为0x0001、0x001E、0x02AF、0x0001。继续重复执行,CNT变为0x0FFA、0x0D08、0x0781、0x0D7C。
结论: 定时器的工作原理: 计数器的哪种功能,其最基本的工作原理是进行计数。定时/计数器的核心是一个计数器,可以进行加1(或减1)计数,每出现一个计数信号,计数器就自动加1(或自动减1),当计数值从最大值变成0(或从0变成最大值)溢出时定时/计数器便向CPU提出中断请求,计数信号的来源可选择周期性的内部时钟信号(如定时功能)或非周期性的外界输入信号(如计数功能)。
掌握定时器库函数的使用:初始化TIM3void timer3_init(unsigned intperiod, unsigned short prescaler) //TIM_Period为16位的数
{
TIM_TimeBaseInitTypeDefTIM_TimeBaseStructure; //定时器配置
NVIC_InitTypeDefNVIC_InitStructure; //中断配置
RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM3, ENABLE);
NVIC_InitStructure.NVIC_IRQChannel= TIM3_IRQn; //TIM3中断通道
NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority= 0; //抢占优先级0
NVIC_InitStructure.NVIC_IRQChannelSubPriority= 1; //子优先级1
NVIC_InitStructure.NVIC_IRQChannelCmd= ENABLE; //使能中断
NVIC_Init(&NVIC_InitStructure);//按照上述配置初始化中断
TIM_TimeBaseStructure.TIM_Period= period; //计数器重装值
TIM_TimeBaseStructure.TIM_Prescaler= prescaler; //预分频值
TIM_TimeBaseStructure.TIM_ClockDivision= TIM_CKD_DIV1; //时钟分割
TIM_TimeBaseStructure.TIM_CounterMode= TIM_CounterMode_Up; //向上计数模式
TIM_TimeBaseInit(TIM3, &TIM_TimeBaseStructure);
//按上述配置初始化TIM3
TIM_ITConfig(TIM3,TIM_IT_Update,ENABLE);
//允许定时器3更新中断
TIM_Cmd(TIM3, ENABLE); //使能TIM3
}
完成定时器程序编写:TIM3中断处理函数void TIM3_IRQHandler(void)
{
if (TIM_GetITStatus(TIM3, TIM_IT_Update) != RESET) { //如果中断标志被设置
TIM_ClearITPendingBit(TIM3, TIM_IT_Update); //清除中断标志
led_status= ~led_status; //LED灯状态标志位翻转
}
}
掌握 定时器程序调试以及寄存器查看 :- Plus 节点上实验现象:D3、D4灯一秒转换一次状态,且两灯的状态保持相反。
- led_status状态由无变成’\0’(0x00)空值。
- TIM3_CNT数值变化:第一次执行CR1、SR、CNT、DMAR由0值分别变为0x0001、0x001E、0x02AF、0x0001。继续重复执行,CNT变为0x0FFA、0x0D08、0x0781、0x0D7C。
|
本文章为转载内容,我们尊重原作者对文章享有的著作权。如有内容错误或侵权问题,欢迎原作者联系我们进行内容更正或删除文章。