2010|0

305

帖子

0

TA的资源

一粒金砂(高级)

楼主
 

再次分享一个自己的例程,串口生成的32Bit随机数STMF4红龙429开发板 [复制链接]

/**
  * @file    Timer.c
  * @author  WB R&D Team - openmcu666
  * @version V0.1
  * @date    2015.7.9
  * @brief   Timer
  */
#include "Timer.h"


__IO uint32_t TimingDelay = 0;
__IO uint32_t CaptureNumber = 0;
__IO uint32_t PeriodValue = 0;

/**
  * @brief  Configures TIM5 to measure the LSI oscillator frequency.
  * @param  None
  * @retval LSI Frequency
  */
uint32_t GetLSIFrequency(void)
{
  NVIC_InitTypeDef   NVIC_InitStructure;
  TIM_ICInitTypeDef  TIM_ICInitStructure;
  RCC_ClocksTypeDef  RCC_ClockFreq;

  RCC_LSICmd(ENABLE);                                              //使能LSI

  while (RCC_GetFlagStatus(RCC_FLAG_LSIRDY) == RESET)              //等待LSI稳定
  {
  }

  /* TIM5 configuration *******************************************************/

  RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM5, ENABLE);            //使能TIM5时钟

  TIM_RemapConfig(TIM5, TIM5_LSI);                                //内部TIM5_CH4输入捕获连接到LSI时钟输出

  TIM_PrescalerConfig(TIM5, 0, TIM_PSCReloadMode_Immediate);      //设置预分频

  /* TIM5 configuration: Input Capture mode ---------------------
     The LSI oscillator is connected to TIM5 CH4
     The Rising edge is used as active edge,
     The TIM5 CCR4 is used to compute the frequency value
  ------------------------------------------------------------ */
  TIM_ICInitStructure.TIM_Channel = TIM_Channel_4;
  TIM_ICInitStructure.TIM_ICPolarity = TIM_ICPolarity_Rising;
  TIM_ICInitStructure.TIM_ICSelection = TIM_ICSelection_DirectTI;
  TIM_ICInitStructure.TIM_ICPrescaler = TIM_ICPSC_DIV8;
  TIM_ICInitStructure.TIM_ICFilter = 0;
  TIM_ICInit(TIM5, &TIM_ICInitStructure);

  /* Enable TIM5 Interrupt channel */
  NVIC_InitStructure.NVIC_IRQChannel = TIM5_IRQn;
  NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0;
  NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0;
  NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
  NVIC_Init(&NVIC_InitStructure);

  TIM_Cmd(TIM5, ENABLE);                                    //启动计数器

  TIM5->SR = 0;                                             //Reset the flags

  TIM_ITConfig(TIM5, TIM_IT_CC4, ENABLE);                   //启动CC4中断请求

  /* Wait until the TIM5 get 2 LSI edges (refer to TIM5_IRQHandler() in
    stm32f4xx_it.c file) ******************************************************/
  while(CaptureNumber != 2)
  {
  }

  TIM_DeInit(TIM5);                                            //设置为复位后的默认值

  RCC_GetClocksFreq(&RCC_ClockFreq);                           //获取系统时钟,HCLK 和 PCLKx 频率

  if ((RCC->CFGR & RCC_CFGR_PPRE1) == 0)                       //获取PCLK1预分频器
  {
    return ((RCC_ClockFreq.PCLK1_Frequency / PeriodValue) * 8);//PCLK1预分频器
  }
  else
  {
    return (((2 * RCC_ClockFreq.PCLK1_Frequency) / PeriodValue) * 8) ;
  }
}
** 实验名:旺宝-红龙429-RNG实验
** KEIL MDK-ARM Standard Version:V5.10
** 软件库(keil) Version: unused
** 固件库(ST) Version: 1.5.0

** 实验说明:
实验原理:
硬件连接:

实验现象:程序运行后,串口打印RNG生成的32Bit随机数.
**********************************/






【11】红龙429_RNG(2015.10.10).rar

60.67 KB, 下载次数: 1

此帖出自stm32/stm8论坛
点赞 关注
个人签名http://openmcu.taobao.com]77[/url]
 

回复
举报
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/7 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表