你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

再次分享一个自己的例程,串口生成的32Bit随机数STMF4红龙429RNG

[复制链接]
20110610ligo 发布时间:2016-9-2 14:15
/**4 N% O! G0 d6 U4 G( O
  * @file    Timer.c 4 t8 i- \1 D- h+ l
  * @author  WB R&D Team - openmcu666- K& |  p, W) X
  * @version V0.1
5 Y" D, G0 A, j! q# C  * @date    2015.7.9
* m/ X3 U9 H+ T) f0 ^1 n9 m4 {/ o  * @brief   Timer
. T" L( M) Y9 W' C& p" h+ @  */
. n, G2 Z! e* a2 `( J7 I1 `#include "Timer.h"
6 A  Y5 c' O6 M$ Q) Y
! K5 c9 W6 p, \" f7 K% }: N+ X1 g: k5 j1 @6 Z% x4 ^
__IO uint32_t TimingDelay = 0;
, p" L. A5 S' g: N% C6 f1 X__IO uint32_t CaptureNumber = 0;
3 m/ F- Q6 F* V/ e  C6 {" `& O__IO uint32_t PeriodValue = 0;
7 ^( y1 V! |; _# k
* I/ t- l/ P# B2 b* m/**5 X( a% A, z# x/ r' E0 _2 A
  * @brief  Configures TIM5 to measure the LSI oscillator frequency. / M+ q; C: I+ v& y) T" r
  * @param  None
) P: ^' g' B" P9 y. @8 I" i  * @retval LSI Frequency+ c' ^2 ]4 M2 @2 P
  */; ^6 d% M4 c6 W2 _1 D
uint32_t GetLSIFrequency(void); g% y7 E& M2 J) i1 }2 |0 q
{
5 K; ?: ?! {2 [+ _  s8 O  NVIC_InitTypeDef   NVIC_InitStructure;
1 G8 o/ k+ V0 w1 a) H8 i  TIM_ICInitTypeDef  TIM_ICInitStructure;
; r' @$ z7 {: n$ ~9 ?2 J  RCC_ClocksTypeDef  RCC_ClockFreq;
6 q0 U( `& d# a( }/ @. M) c; ]$ B0 q0 c+ ~# T# w# ?
  RCC_LSICmd(ENABLE);                                              //使能LSI
6 z# y+ s, _" D" g; f/ w: X# ?9 t5 v9 M) N" B
  while (RCC_GetFlagStatus(RCC_FLAG_LSIRDY) == RESET)              //等待LSI稳定5 C& P+ p9 Z" |% [) q
  {# r9 |2 W, e$ ~' ^! k. l9 I- J; a
  }7 D! S$ j$ {9 z) d
, j4 J6 I& ?& o# v" y+ X; f
  /* TIM5 configuration *******************************************************/
/ [, ^/ V8 r+ l% f  K/ E' \- J4 m& w
0 H9 N) s' ?, y( @8 g, }( ^! g' k) G  RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM5, ENABLE);            //使能TIM5时钟$ V7 h0 \; E' U% ~9 v

, A, ?  J: J+ D  TIM_RemapConfig(TIM5, TIM5_LSI);                                //内部TIM5_CH4输入捕获连接到LSI时钟输出
$ ^: v0 \: l' w
  o% H2 u# A* u# x- }" ]& n  TIM_PrescalerConfig(TIM5, 0, TIM_PSCReloadMode_Immediate);      //设置预分频/ B/ _. V) c- o) g& j

3 e- A9 v( K- U+ o( y  /* TIM5 configuration: Input Capture mode ---------------------
: \. h$ O6 X. X# F  N9 }5 x     The LSI oscillator is connected to TIM5 CH4
# E! f' E8 Q* l     The Rising edge is used as active edge,3 |/ F/ x0 m$ C
     The TIM5 CCR4 is used to compute the frequency value
0 f' d( B- O, H; ~6 Z4 W  Y) l  ------------------------------------------------------------ */
+ v, |1 t! e# G( P6 c9 G- e. }% X- Q$ H  TIM_ICInitStructure.TIM_Channel = TIM_Channel_4;9 C( T3 x4 O% W- ~2 P. Y
  TIM_ICInitStructure.TIM_ICPolarity = TIM_ICPolarity_Rising;" U) ]1 c! E/ f; V
  TIM_ICInitStructure.TIM_ICSelection = TIM_ICSelection_DirectTI;
6 {$ E# r2 C9 ^4 g' v; o( N  TIM_ICInitStructure.TIM_ICPrescaler = TIM_ICPSC_DIV8;
+ L' T! `" l: W9 u2 Z4 Y9 f: k  TIM_ICInitStructure.TIM_ICFilter = 0;. z$ s& U; j$ n1 H/ Y
  TIM_ICInit(TIM5, &TIM_ICInitStructure);
, F0 i" n) i# C7 P" C/ w
& k$ h7 ^) C  r+ i8 A& S  /* Enable TIM5 Interrupt channel */
1 Q. s9 ]/ E6 K4 Q! a4 H  NVIC_InitStructure.NVIC_IRQChannel = TIM5_IRQn;9 M4 e/ X) j& U# i2 @
  NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0;
4 Q  b' v8 m0 |) X3 a8 J& T  NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0;! b1 A7 V8 s- u6 }  I: G4 x  v
  NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
/ R- s5 `" _7 Q. x) w/ R& {  NVIC_Init(&NVIC_InitStructure);1 R5 J6 L+ k+ M5 ^0 ?) ^  @2 w
4 m9 A4 ]2 H/ J) Y0 O2 f3 G  @
  TIM_Cmd(TIM5, ENABLE);                                    //启动计数器! @5 e+ z! q- t
% n. ?9 @1 X* g: [  `; E8 N
  TIM5->SR = 0;                                             //Reset the flags
$ w8 F- B/ ]4 B3 K7 y
* \  ?/ x; _/ ~5 D6 A/ C3 q  TIM_ITConfig(TIM5, TIM_IT_CC4, ENABLE);                   //启动CC4中断请求
( j/ a( W0 D  M. f# b) v3 N7 k
, D: t/ L. f5 J+ J+ J  /* Wait until the TIM5 get 2 LSI edges (refer to TIM5_IRQHandler() in
1 r! W) q  O) [* C% w, m    stm32f4xx_it.c file) ******************************************************/
+ b( g  s# D  e7 \2 `  while(CaptureNumber != 2)5 Q# m8 `/ L- r- q: v1 o% k
  {
4 _- i7 o1 ]& q9 h  }
, d# ^/ d6 o3 ~( t/ O: l. ?: x7 M6 A. `" q' _2 J+ S7 P
  TIM_DeInit(TIM5);                                            //设置为复位后的默认值; H/ U; m" K9 l" i

. Z8 {! n3 d% w  RCC_GetClocksFreq(&RCC_ClockFreq);                           //获取系统时钟,HCLK 和 PCLKx 频率5 m' b5 ~$ D" H, v2 C# m

; M/ _- y3 \. m5 N5 F  if ((RCC->CFGR & RCC_CFGR_PPRE1) == 0)                       //获取PCLK1预分频器
7 A# Z2 d1 r, ^  { ; l% V  z4 A8 m8 T
    return ((RCC_ClockFreq.PCLK1_Frequency / PeriodValue) * 8);//PCLK1预分频器
$ B- Z, \& X' l1 P% h  }8 Z  F/ d9 J8 D4 ^/ ^2 G' o1 l
  else/ ^  p, X6 y( d1 o5 J# b% P" h
  { # P% b: O/ D! X. \: f- v
    return (((2 * RCC_ClockFreq.PCLK1_Frequency) / PeriodValue) * 8) ;
+ @/ t) i3 O1 {7 }  `* R5 B  }- h6 W6 Z" z9 U) N  `9 f+ G' m& E6 B% T
}. c- \- F$ J4 v9 s: L, v9 d  {

+ b$ p' C  }( H2 m+ q** 实验名:旺宝-红龙429-RNG实验* a' E- r' v0 F
** KEIL MDK-ARM Standard Version:V5.10
% G" B) k) _# [+ o2 J5 E" M** 软件库(keil) Version: unused
0 a+ \/ J/ |" v# i5 y: u( y** 固件库(ST) Version: 1.5.0
! u8 S8 b* X7 m4 I; z) c. H( n5 f
5 \$ `. L6 G$ f- x; o** 实验说明:+ X" k# W  D6 N9 v& A
实验原理:4 J' `$ S/ s# W' B5 u
硬件连接:+ F6 u% m( ?; ^2 U$ b. I* ]1 [/ k
9 H+ @. z9 N  j7 j
实验现象:程序运行后,串口打印RNG生成的32Bit随机数.5 U. F3 k# q- F! u
**********************************/
2 t. W2 H4 L: v9 \  t* @/ k3 }/ I0 Y# E: A# J3 x+ O- u) P
3 C0 m: q* |7 h3 s1 T
( J6 a) T7 o- e, c2 [3 h2 W
* ?* c) E* D1 Y( _  u
* u- X8 G! X# e+ g: s
0 X# J2 I/ R3 O* I# F

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

下载

60.67 KB, 下载次数: 10

赞 收藏 1 评论2 发布时间:2016-9-2 14:15

举报

2个回答
20110610ligo 回答时间:2016-9-22 10:06:42
妈呀这么给力的的帖子啊   我看到了这个http://z.elecfans.com/73.html    $ b3 A) `" G4 b: r& _4 t+ g- ^
STM32F429开发板(简单,易学,实用)众筹
高二毛 回答时间:2016-9-22 10:13:57
谢谢分享
关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
人形机器人运动控制、感知与智能配电
半导体创新技术与应用方向
EE架构与软件定义汽车
12V/48V 汽车智能配电(SPD)
区域控制单元(ZCU)与分区架构
关注我们
st-img 微信公众号
st-img 手机版