STM32待机模式唤醒测试以及独立看门狗测试

发布者:不懂之人最新更新时间:2016-12-19 来源: eefocus关键字:STM32  待机模式  唤醒测试  独立看门狗 手机看文章 扫描二维码
随时随地手机看文章

环境:

主机:WIN7

开发环境:MDK4.23

MCU:STM32F103CBT6


说明:

在上篇文章中http://blog.csdn.net/jdh99/article/details/7369844,进行了一些STM32待机模式的测试.其中关于如何在再次启动时判断是否是待机模式没有进行测试.另外上篇文章有个问题,闹钟中断在待机模式下是进入不了的.

本文进行了独立看门狗IWDG测试,以及待机模式更详细的测试.

 

STM32中,复位分为3种:

1.系统复位:外部复位,WWDG,IWDG,SW复位,低功耗管理复位.除复位标志寄存器RCC_CSR不被复位,全部都被复位

2.电源复位:上电/掉电复位,从待机模式复位.上电/掉电复位除备份域外寄存器全部复位.待机复位不会复位备份域寄存器以及PWR_CSR寄存器.

3.备份域复位.

寄存器说明:

 

由图可以看出,可以通过WUF位来判断是否由待机模式唤醒.

 

RCC_CSR寄存器:

由图可以看出,RCC_CSR寄存器的IWDGRSTF位可以指示是否发生独立看门狗复位.

因为在看门狗复位时如果系统不处在待机模式,PWR_CSR寄存器也会被复位,所以WUF位也可以指示是否发生独立看门狗复位.

 

源代码:

独立看门狗复位测试:

 

  1. //检查唤醒标志是否设置  

  2. if (PWR_GetFlagStatus(PWR_FLAG_WU) == RESET)  

  3. {  

  4.     //首次启动,或者独立看门狗复位   

  5.     //初始化备份寄存器  

  6.     //BKP_DeInit();  

  7.   

  8.     //RTC功能开启  

  9.     //使能外部晶振  

  10.     RCC_LSEConfig(RCC_LSE_ON);  

  11.     //等待外部晶振准备好  

  12.     while(RCC_GetFlagStatus(RCC_FLAG_LSERDY) == RESET);  

  13.   

  14.     //设置RTC时钟为外部晶振  

  15.     RCC_RTCCLKConfig(RCC_RTCCLKSource_LSE);  

  16.   

  17.     //使能RTC时钟  

  18.     RCC_RTCCLKCmd(ENABLE);  

  19.     //等待RTC_CTL寄存器中的RSF位(寄存器同步标志)被硬件置1  

  20.     RTC_WaitForSynchro();  

  21.     RTC_WaitForLastTask();    

  22.   

  23.     //使能闹钟中断     

  24.     RTC_ITConfig(RTC_IT_ALR, ENABLE);    

  25.     RTC_WaitForLastTask();    

  26.   

  27.     //分频系数为1,即最小时间单位1/2^15 = 30.5us  

  28.     RTC_SetPrescaler(RTC_PRESCALE);    

  29.     RTC_WaitForLastTask();  

  30.   

  31.     //启动独立看门狗  

  32.     IWDG_WriteAccessCmd(IWDG_WriteAccess_Enable);                   //访问之前要首先使能寄存器写  

  33.     IWDG_SetPrescaler(IWDG_Prescaler_64);                           //64分频 一个周期1.6ms  

  34.     IWDG_SetReload(1250);                                           //最长12位 [0,4096] 1250*1.6 = 2s  

  35.     IWDG_ReloadCounter();                                           //喂狗  

  36.     //使能开门狗  

  37.     IWDG_Enable();    

  38.       

  39.     if (BKP_ReadBackupRegister(BKP_DR6) == 0xabcd)  

  40.     {  

  41.         GPIO_ResetBits(GPIOA, GPIO_Pin_11) ;  

  42.         BKP_WriteBackupRegister(BKP_DR6,0);  

  43.     }  

  44.     else  

  45.     {  

  46.         GPIO_SetBits(GPIOA,GPIO_Pin_11) ;  

  47.         BKP_WriteBackupRegister(BKP_DR6,0xabcd);  

  48.     }                                             

  49. }  

  50. else  

  51. {     

  52.     //从待机模式中退出    

  53.     //清除唤醒标志  

  54.     RCC_ClearFlag();   

  55.   

  56.     if (BKP_ReadBackupRegister(BKP_DR7) == 0xabcd)  

  57.     {  

  58.         GPIO_ResetBits(GPIOA, GPIO_Pin_8) ;  

  59.         BKP_WriteBackupRegister(BKP_DR7,0);  

  60.     }  

  61.     else  

  62.     {  

  63.         GPIO_SetBits(GPIOA,GPIO_Pin_8) ;  

  64.         BKP_WriteBackupRegister(BKP_DR7,0xabcd);  

  65.     }  

  66. }  

  67. while (1);  


测试结果PA11引脚所连的LED不断闪烁,PA8所连的LED常亮,这说明不断进入看门狗复位.

 

待机模式RTC闹钟唤醒测试:

 

  1. //检查唤醒标志是否设置  

  2. if (PWR_GetFlagStatus(PWR_FLAG_WU) == RESET)  

  3. {  

  4.     //首次启动,或者独立看门狗复位   

  5.     //初始化备份寄存器  

  6.     //BKP_DeInit();  

  7.   

  8.     //RTC功能开启  

  9.     //使能外部晶振  

  10.     RCC_LSEConfig(RCC_LSE_ON);  

  11.     //等待外部晶振准备好  

  12.     while(RCC_GetFlagStatus(RCC_FLAG_LSERDY) == RESET);  

  13.   

  14.     //设置RTC时钟为外部晶振  

  15.     RCC_RTCCLKConfig(RCC_RTCCLKSource_LSE);  

  16.   

  17.     //使能RTC时钟  

  18.     RCC_RTCCLKCmd(ENABLE);  

  19.     //等待RTC_CTL寄存器中的RSF位(寄存器同步标志)被硬件置1  

  20.     RTC_WaitForSynchro();  

  21.     RTC_WaitForLastTask();    

  22.   

  23.     //使能闹钟中断     

  24.     RTC_ITConfig(RTC_IT_ALR, ENABLE);    

  25.     RTC_WaitForLastTask();    

  26.   

  27.     //分频系数为1,即最小时间单位1/2^15 = 30.5us  

  28.     RTC_SetPrescaler(RTC_PRESCALE);    

  29.     RTC_WaitForLastTask();  

  30.   

  31.     //启动独立看门狗  

  32.     IWDG_WriteAccessCmd(IWDG_WriteAccess_Enable);                   //访问之前要首先使能寄存器写  

  33.     IWDG_SetPrescaler(IWDG_Prescaler_64);                           //64分频 一个周期1.6ms  

  34.     IWDG_SetReload(1250);                                           //最长12位 [0,4096] 1250*1.6 = 2s  

  35.     IWDG_ReloadCounter();                                           //喂狗  

  36.     //使能开门狗  

  37.     //IWDG_Enable();      

  38.       

  39.     if (BKP_ReadBackupRegister(BKP_DR6) == 0xabcd)  

  40.     {  

  41.         GPIO_ResetBits(GPIOA, GPIO_Pin_11) ;  

  42.         BKP_WriteBackupRegister(BKP_DR6,0);  

  43.     }  

  44.     else  

  45.     {  

  46.         GPIO_SetBits(GPIOA,GPIO_Pin_11) ;  

  47.         BKP_WriteBackupRegister(BKP_DR6,0xabcd);  

  48.     }                                             

  49. }  

  50. else  

  51. {     

  52.     //从待机模式中退出    

  53.     //清除唤醒标志  

  54.     RCC_ClearFlag();   

  55.   

  56.     if (BKP_ReadBackupRegister(BKP_DR7) == 0xabcd)  

  57.     {  

  58.         GPIO_ResetBits(GPIOA, GPIO_Pin_8) ;  

  59.         BKP_WriteBackupRegister(BKP_DR7,0);  

  60.     }  

  61.     else  

  62.     {  

  63.         GPIO_SetBits(GPIOA,GPIO_Pin_8) ;  

  64.         BKP_WriteBackupRegister(BKP_DR7,0xabcd);  

  65.     }  

  66. }  

 

  1. //延时1s  

  2. for (i = 0;i < 100;i++)  

  3. {  

  4.       _delay_ms(10);  

  5. }  

 

  1. //打开待机模式,1s后唤醒  

 

  1. open_standy_mode(30000);  

每次刚上电所有LED会亮,进入待机模式则全部灭.测试结果PA8引脚所连的LED会亮1s进入灭进入待机模式,下次则常灭进入待机模式.PA11所连的LED随着低功耗进入正常亮灭,这说明不断发生闹钟唤醒(看门狗已关).

 

待机模式IWDG唤醒测试:

 

  1. //检查唤醒标志是否设置  

  2. if (PWR_GetFlagStatus(PWR_FLAG_WU) == RESET)  

  3. {  

  4.     //首次启动,或者独立看门狗复位   

  5.     //初始化备份寄存器  

  6.     //BKP_DeInit();  

  7.   

  8.     //RTC功能开启  

  9.     //使能外部晶振  

  10.     RCC_LSEConfig(RCC_LSE_ON);  

  11.     //等待外部晶振准备好  

  12.     while(RCC_GetFlagStatus(RCC_FLAG_LSERDY) == RESET);  

  13.   

  14.     //设置RTC时钟为外部晶振  

  15.     RCC_RTCCLKConfig(RCC_RTCCLKSource_LSE);  

  16.   

  17.     //使能RTC时钟  

  18.     RCC_RTCCLKCmd(ENABLE);  

  19.     //等待RTC_CTL寄存器中的RSF位(寄存器同步标志)被硬件置1  

  20.     RTC_WaitForSynchro();  

  21.     RTC_WaitForLastTask();    

  22.   

  23.     //使能闹钟中断     

  24.     RTC_ITConfig(RTC_IT_ALR, ENABLE);    

  25.     RTC_WaitForLastTask();    

  26.   

  27.     //分频系数为1,即最小时间单位1/2^15 = 30.5us  

  28.     RTC_SetPrescaler(RTC_PRESCALE);    

  29.     RTC_WaitForLastTask();  

  30.   

  31.     //启动独立看门狗  

  32.     IWDG_WriteAccessCmd(IWDG_WriteAccess_Enable);                   //访问之前要首先使能寄存器写  

  33.     IWDG_SetPrescaler(IWDG_Prescaler_64);                           //64分频 一个周期1.6ms  

  34.     IWDG_SetReload(1250);                                           //最长12位 [0,4096] 1250*1.6 = 2s  

  35.     IWDG_ReloadCounter();                                           //喂狗  

  36.     //使能开门狗  

  37.     IWDG_Enable();    

  38.       

  39.     if (BKP_ReadBackupRegister(BKP_DR6) == 0xabcd)  

  40.     {  

  41.         GPIO_ResetBits(GPIOA, GPIO_Pin_11) ;  

  42.         BKP_WriteBackupRegister(BKP_DR6,0);  

  43.     }  

  44.     else  

  45.     {  

  46.         GPIO_SetBits(GPIOA,GPIO_Pin_11) ;  

  47.         BKP_WriteBackupRegister(BKP_DR6,0xabcd);  

  48.     }                                             

  49. }  

  50. else  

  51. {     

  52.     //从待机模式中退出    

  53.     //清除唤醒标志  

  54.     RCC_ClearFlag();   

  55.   

  56.     if (BKP_ReadBackupRegister(BKP_DR7) == 0xabcd)  

  57.     {  

  58.         GPIO_ResetBits(GPIOA, GPIO_Pin_8) ;  

  59.         BKP_WriteBackupRegister(BKP_DR7,0);  

  60.     }  

  61.     else  

  62.     {  

  63.         GPIO_SetBits(GPIOA,GPIO_Pin_8) ;  

  64.         BKP_WriteBackupRegister(BKP_DR7,0xabcd);  

  65.     }  

  66. }  

  67.   

  68. //延时1s  

  69. for (i = 0;i < 100;i++)  

  70. {  

  71.     _delay_ms(10);  

  72. }  

  73.       

  74. //打开待机模式,2s后唤醒  

  75. open_standy_mode(60000);  

 

每次刚上电所有LED会亮,进入待机模式则全部灭.测试结果PA11引脚所连的LED会亮1s进入灭进入待机模式,下次则常灭进入待机模式.PA8所连的LED随着低功耗进入正常亮灭,而且待机模式是待机2s加延时1s应该是3s唤醒,LED闪烁频率2s左右说明被提前唤醒.这说明不断发生看门狗唤醒.

 

完整的测试程序:判断出首次启动程序,单片机处于正常状态时看门狗复位,单片机处于待机模式下被闹钟唤醒/看门狗唤醒.

注意:每次看门狗复位都要被重新配置启动

 

  1. //检查是否正常状态发生看门狗复位  

  2. if (RCC_GetFlagStatus(RCC_FLAG_IWDGRST) != RESET)  

  3. {  

  4.     //清楚标志位  

  5.     RCC_ClearFlag();  

  6.   

  7.     //RTC功能开启  

  8.     //使能外部晶振  

  9.     RCC_LSEConfig(RCC_LSE_ON);  

  10.     //等待外部晶振准备好  

  11.     while(RCC_GetFlagStatus(RCC_FLAG_LSERDY) == RESET);  

  12.   

  13.     //设置RTC时钟为外部晶振  

  14.     RCC_RTCCLKConfig(RCC_RTCCLKSource_LSE);  

  15.   

  16.     //使能RTC时钟  

  17.     RCC_RTCCLKCmd(ENABLE);  

  18.     //等待RTC_CTL寄存器中的RSF位(寄存器同步标志)被硬件置1  

  19.     RTC_WaitForSynchro();  

  20.     RTC_WaitForLastTask();    

  21.   

  22.     //使能闹钟中断     

  23.     RTC_ITConfig(RTC_IT_ALR, ENABLE);    

  24.     RTC_WaitForLastTask();    

  25.   

  26.     //分频系数为1,即最小时间单位1/2^15 = 30.5us  

  27.     RTC_SetPrescaler(RTC_PRESCALE);    

  28.     RTC_WaitForLastTask();  

  29.   

  30.     //启动独立看门狗  

  31.     IWDG_WriteAccessCmd(IWDG_WriteAccess_Enable);                   //访问之前要首先使能寄存器写  

  32.     IWDG_SetPrescaler(IWDG_Prescaler_64);                           //64分频 一个周期1.6ms  

  33.     IWDG_SetReload(1250);                                           //最长12位 [0,4096] 1250*1.6 = 2s  

  34.     IWDG_ReloadCounter();                                           //喂狗  

  35.     //使能开门狗  

  36.     IWDG_Enable();  

  37.   

  38.     if (BKP_ReadBackupRegister(BKP_DR5) == 0xabcd)  

  39.     {  

  40.         GPIO_SetBits(GPIOA,GPIO_Pin_12) ;  

  41.         BKP_WriteBackupRegister(BKP_DR5,0);  

  42.     }  

  43.     else  

  44.     {  

  45.         GPIO_ResetBits(GPIOA, GPIO_Pin_12) ;  

  46.         BKP_WriteBackupRegister(BKP_DR5,0xabcd);  

  47.     }     

  48. }  

  49. else  

  50. {  

  51.     //检查唤醒标志是否设置,判断是否首次启动  

  52.     if (PWR_GetFlagStatus(PWR_FLAG_WU) == RESET)  

  53.     {  

  54.         //首次启动  

  55.         //初始化备份寄存器  

  56.         //BKP_DeInit();  

  57.   

  58.         //RTC功能开启  

  59.         //使能外部晶振  

  60.         RCC_LSEConfig(RCC_LSE_ON);  

  61.         //等待外部晶振准备好  

  62.         while(RCC_GetFlagStatus(RCC_FLAG_LSERDY) == RESET);  

  63.       

  64.         //设置RTC时钟为外部晶振  

  65.         RCC_RTCCLKConfig(RCC_RTCCLKSource_LSE);  

  66.       

  67.         //使能RTC时钟  

  68.         RCC_RTCCLKCmd(ENABLE);  

  69.         //等待RTC_CTL寄存器中的RSF位(寄存器同步标志)被硬件置1  

  70.         RTC_WaitForSynchro();  

  71.         RTC_WaitForLastTask();    

  72.   

  73.         //使能闹钟中断     

  74.         RTC_ITConfig(RTC_IT_ALR, ENABLE);    

  75.         RTC_WaitForLastTask();    

  76.   

  77.         //分频系数为1,即最小时间单位1/2^15 = 30.5us  

  78.         RTC_SetPrescaler(RTC_PRESCALE);    

  79.         RTC_WaitForLastTask();  

  80.   

  81.         //启动独立看门狗  

  82.         IWDG_WriteAccessCmd(IWDG_WriteAccess_Enable);                   //访问之前要首先使能寄存器写  

  83.         IWDG_SetPrescaler(IWDG_Prescaler_64);                           //64分频 一个周期1.6ms  

  84.         IWDG_SetReload(1250);                                           //最长12位 [0,4096] 1250*1.6 = 2s  

  85.         IWDG_ReloadCounter();                                           //喂狗  

  86.         //使能开门狗  

  87.         IWDG_Enable();    

  88.           

  89.         if (BKP_ReadBackupRegister(BKP_DR6) == 0xabcd)  

  90.         {  

  91.             GPIO_ResetBits(GPIOA, GPIO_Pin_11) ;  

  92.             BKP_WriteBackupRegister(BKP_DR6,0);  

  93.         }  

  94.         else  

  95.         {  

  96.             GPIO_SetBits(GPIOA,GPIO_Pin_11) ;  

  97.             BKP_WriteBackupRegister(BKP_DR6,0xabcd);  

  98.         }                                             

  99.     }  

  100.     else  

  101.     {     

  102.         //从待机模式中退出,有闹钟唤醒或者看门狗唤醒   

  103.         //清除唤醒标志  

  104.         RCC_ClearFlag();   

  105.   

  106.         if (BKP_ReadBackupRegister(BKP_DR7) == 0xabcd)  

  107.         {  

  108.             GPIO_ResetBits(GPIOA, GPIO_Pin_8) ;  

  109.             BKP_WriteBackupRegister(BKP_DR7,0);  

  110.         }  

  111.         else  

  112.         {  

  113.             GPIO_SetBits(GPIOA,GPIO_Pin_8) ;  

  114.             BKP_WriteBackupRegister(BKP_DR7,0xabcd);  

  115.         }  

  116.     }  

  117. }  

  118.   

  119. //延时1s  

  120. for (i = 0;i < 100;i++)  

  121. {  

  122.     _delay_ms(10);  

  123. }  

  124.   

  125. //打开待机模式,2s后唤醒  

  126. open_standy_mode(60000);  


关键字:STM32  待机模式  唤醒测试  独立看门狗 引用地址:STM32待机模式唤醒测试以及独立看门狗测试

上一篇:STM32单片机PWM输出测试
下一篇:STM32外部中断测试

推荐阅读最新更新时间:2024-03-16 15:26

STM32 CAN模块使用
简介:STM32 CAN模块使用详解.重点介绍以STM32F103E系列芯片为基础介绍CAN 总线的使用方法。CAN 总线在控制领域使用的非常广泛,如今大多数CPU芯片外围都扩展CAN接口。 1. 硬件基础 CAN总线工作需要两根数据线,RX和TX,即为输入总线和输出总线。一般CPU与外界通信需要接一个驱动芯片(这点很像UART接口),常用的CAN芯片主要有:SN65VHD230、PCA82C250T等,本系统使用SN65VHD230作为CAN接口芯片。而CPU提供的CAN接口为CAN_L和CAN_H。 2. 软件设计 在进行软件设计时,我们首先来看这样的一个结构体: typedef struct { uint32_t S
[单片机]
STM32之FSMC的液晶使用
经过这两天的学习液晶,对STM32的FSMC有了初步的了解。虽然遇到了一些问题,但经过不懈的努力,都一一的解决了,接下来我就使用FSMC可能遇到的问题进行说明。希望能对大家的学习有所帮助。 一、端口配置 1、 由于FSMC写NOR时序与8080接口的时序十分相识,因此我们采用模拟8080时序, 2、 STM32的引脚图如图所示。 3、根据上图我们可以得出,FSMC的数据端口D 如下 4、我们使用的是 FSMC 的信号线 NE1 作为控制 8080 的 CSX 片选信号,所以我们把本成配置为 FSMC_Bank1_NORSRAM1 (NE1 片选BANK1)。由上图得FSMC-NE1 ==PD7
[单片机]
STM32之GPIO及第一个STM32程序(跑马灯)
今天来说一说,GPIO,对于我这个新手来说,GPIO就好比我在学习开车之前得学会如何开门一样,由此可以看出这对于我学习STM32 的重要性,好废话不多说,先总结一下STM32F103ZE的开发板里总共有7组IO口,每组IO口有16个IO,即这块板子总共有112个IO口分别是GPIOA~GPIOG。 GPIO的工作模式主要有八种:4种输入方式,4种输出方式,分别为输入浮空,输入上拉,输入下拉,模拟输入;输出方式为开漏输出,开漏复用输出,推挽输出,推挽复用输出。对应的为: (1)GPIO_Mode_AIN 模拟输入 (2)GPIO_Mode_IN_FLOATING 浮空输入 (3)GPIO_Mode_IPD 下拉输入 (4)GPIO_
[单片机]
STM32】HAL库-电源控制(低功耗模式)
电源框图 ADC单独供电 为了提高转换的精确度,ADC使用一个独立的电源供电,过滤和屏蔽来自印刷电路板上的毛刺干扰。 ADC的电源引脚为VDDA 独立的电源地VSSA 电池备份区域 当VDD断电时,可以保存备份寄存器的内容和维持RTC的功能。 VBAT为RTC、LSE(低速外部时钟)振荡器、备份寄存器和PC13至PC15供电。 当备份区域由VDD(内部模拟开关连到VDD)供电时,下述功能可用: PC14和PC15可以用于GPIO或LSE引脚 PC13可以作为通用I/O口、TAMPER引脚、RTC校准时钟、RTC闹钟或秒输出 当后备区域由VBAT供电时(VDD消失后模拟开关连到VBAT),可以使用下述功能:
[单片机]
【<font color='red'>STM32</font>】HAL库-电源控制(低功耗<font color='red'>模式</font>)
STM32 AD7792驱动调试总结
调了好久,终于通了。。为什么用了一周时间这么久?主要原因是我不知道隔离模块有问题,导致一直是盲目的改代码,今天没办法,直接把隔离模块短路,一下子就读出了ID号。 7792挂在SPI2上,PB12,PB13,PB14,PB15,可我用SPI调的时候一直读出来是0XFF,以为是SPI2有问题,于是我直接抛弃SPI,用时序直接读。很好用!!! 下面是我的代码: #define SCLOCK1 GPIO_SetBits(GPIOB,GPIO_Pin_13); #define SCLOCK0 GPIO_ResetBits(GPIOB,GPIO_Pin_13); #define CS1 GPIO_SetBits(GPIOB,G
[单片机]
STM32_IAP详解(有代码,有上位机)
Iap,全名为in applacation programming,即在应用编程,与之相对应的叫做isp,in system programming,在系统编程,两者的不同是isp需要依靠烧写器在单片机复位离线的情况下编程,需要人工的干预,而iap则是用户自己的程序在运行过程中对User Flash 的部分区域进行烧写,目的是为了在产品发布后可以方便地通过预留的通信口对产品中的固件程序进行更新升级。在工程应用中经常会出现我们的产品被安装在某个特定的机械结构中,更新程序的时候拆机很不方便,使用iap技术能很好地降低工作量. 实现iap有两个很重要的前提,首先,单片机程序能对自身的内部flash进行擦写,第二,单片机要有能够和外部
[单片机]
STM32_IAP详解(有代码,有上位机)
stm32之i2C硬件驱动ht16c22
使用硬件i2c,驱动ht16c22,程序不稳定是肯定的,还是贴出来吧,项目中最好不要用。 文件i2c.h内容: #ifndef _STM32F103_I2C_H_ #define _STM32F103_I2C_H_ #include stm32f10x.h #define SlaveAddress 0x7e //0x7e //#define ModeSet 0b10001100 //80Hz,turn on sys and LCD bias,1/3 bias #define ModeSet 0x8C //80Hz,turn on sys and LCD bias,1/3 bias //#define VlcdAdjus
[单片机]
基于STM32和CPLD的等精度测频设计
在电子工程、资源勘探、仪器仪表等相关应用中,频率测量是电子测量技术中最基本最常见的测量之一,频率计也是工程技术人员必不可少的测量工具。但是,传统的频率测量方法在实际应用中有较大的局限性,基于传统测频原理的频率计的测量精度将随被测信号频率的变化而变化,传统的直接测频法其测量精度将随被测信号频率的降低而降低,测周法的测量精度将随被测信号频率的升高而降低。本文中提出一种基于ARM与CPLD宽频带的数字频率计的设计,以微控器STM32作为核心控制芯片,利用CPLD可编程逻辑器件,实现闸门测量技术的等精度测频。 本设计的技术指标: 测频范围:1Hz~200MHz,分辨率为0.1Hz,测频相对误差百万分之一。 周期测量:信号测量范围与精
[嵌入式]
基于<font color='red'>STM32</font>和CPLD的等精度测频设计
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

最新单片机文章
  • ARM裸机篇--按键中断
    先看看GPOI的输入实验:按键电路图:GPF1管教的功能:EINT1要使用GPF1作为EINT1的功能时,只要将GPFCON的3:2位配置成10就可以了!GPF1先配 ...
  • 网上下的--ARM入门笔记
    简单的介绍打今天起菜鸟的ARM笔记算是开张了,也算给我的这些笔记找个存的地方。为什么要发布出来?也许是大家感兴趣的,其实这些笔记之所 ...
  • 学习ARM开发(23)
    三个任务准备与运行结果下来看看创建任务和任运的栈空间怎么样的,以及运行输出。Made in china by UCSDN(caijunsheng)Lichee 1 0 0 ...
  • 学习ARM开发(22)
    关闭中断与打开中断中断是一种高效的对话机制,但有时并不想程序运行的过程中中断运行,比如正在打印东西,但程序突然中断了,又让另外一个 ...
  • 学习ARM开发(21)
    先要声明任务指针,因为后面需要使用。 任务指针 volatile TASK_TCB* volatile g_pCurrentTask = NULL;volatile TASK_TCB* vol ...
  • 学习ARM开发(20)
  • 学习ARM开发(19)
  • 学习ARM开发(14)
  • 学习ARM开发(15)
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
更多每日新闻
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved