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

STM32初学者笔记(1) 一步步建立自己的STM32函数

[复制链接]
qazwsx-19104 发布时间:2008-9-3 20:22
STM32初学者笔记(1) 一步步建立自己的STM32函数( V% Q, P& ^& X9 L( r1 T
使用自己建立的 STM32F103.H 的 头文件。里面有大量中文注释。非常适合初学者。5 _1 W& M( Q  E$ n- Z6 I! v% x

/ C2 f/ `, j. u! Y# PSTM32的库实在太庞大负责,对初学者来说实在是件头痛的事情!
/ }8 c, x. h. \7 m7 _% K; {1 F8 c
下面是万利开发板 LCD DEMO 例子中的函数,改后初学者可以对照学习一下。8 M! z7 r; B( p

* `+ }4 @- a- l' d- D+ ]6 ~! `- T4 g2 j- N6 ~+ Q* [
//=========================================================================: |  H# b. Q) Y
//     原函数名称: RCC_Configuration(void)
/ K+ s5 ^# I# {5 p2 S/ d//=========================================================================/ K! o1 J  U8 i' S$ @  \* w
void STM32_RCC_Configuration(void)
( ^" F5 i; ]  Y{
: M" ?* i- O1 g; \6 [1 J& ]" p
, Q' C( X+ ]$ |0 i, S/ `, J    STM32_Rcc_Regs->cr.bit.HSEON=0;        // HSE振荡器开启关闭9 v3 w: N% q* N
    STM32_Rcc_Regs->cr.bit.HSEBYP=0;    // 外部高速时钟没有旁路! A$ @0 R( g/ O8 F4 t7 c% O# A: E
    STM32_Rcc_Regs->cr.bit.HSERDY=0;    // 外部高速时钟就绪标志清零
' {% Z/ B7 _- ]- m        
8 [9 l* {/ z) ~( @    STM32_Rcc_Regs->cr.bit.HSEON=1;        // 外部高速时钟使能    1:HSE振荡器开启
* f4 j% D) H0 Y8 t
/ d  ~& D1 ~8 K( K7 f# D    ! H  x+ d1 F8 ^3 t& I
     while( !(STM32_Rcc_Regs->cr.bit.HSERDY ) );//由硬件置1来指示外部时钟已经稳定。
/ X! [, L& q8 G( {     
. F1 y& X6 Q+ `. }! w+ z$ C     /* HCLK = SYSCLK=72MHZ  :HLCK 提供给CPU, 内存和DMA 最大72MHZ  */
- M2 a2 ?6 K+ T' R8 @- A( c5 e     STM32_Rcc_Regs->crfgr.bit.HPRE=RCC_AHB_SYSCLK_DIV1_B;    //AHB预分频
2 c% X' E) m) J# d' Y3 O
; E$ f9 T/ O( W- i# [  B& g& @' a/ u    /* PCLK2 = HCLK/1=SYSCLK=72   PCLK2 提供给 APB2外设,最大72MHZ */
, F' k& I  A0 T+ e     STM32_Rcc_Regs->crfgr.bit.PPRE2=RCC_APB2_HCLK_DIV1_B;    //高速APB预分频(APB2)- _% }" H2 T3 e! c4 s: G" H3 O
     
! \" @. @: s/ P9 l% t( Y# U     /* PCLK1 = HCLK/2=SYSCLK/2=36   PCLK1提供给APB1外设,最大36MHZ */
" F: }7 z9 q. v& K: k/ q$ t     STM32_Rcc_Regs->crfgr.bit.PPRE1=RCC_APB1_HCLK_DIV2_B;    //低速APB预分频(APB1)必须保证APB1时钟频率不超过36MHz
5 s# L# X1 z: F- W: J9 E+ L- T6 r9 O# i5 a
    3 v+ b% I- R# B  {% [2 x" A) K' |
      /* ADCCLK = PCLK2/6     ADC转换速率:72M/6 = 12MHZ  */
; B* G9 `7 j" g+ i. J     STM32_Rcc_Regs->cfgr.bit.ADCPRE=RCC_ADCPRE_PCLK2_DIV6_B;    
7 R% m1 R& k% J/ y+ @# O     
" D$ E! t4 F4 G( \     /* Flash 2 wait state */
+ W: X6 L5 {7 c! f* u) s! R/ i  z     STM32_Flash_Regs->ACR.all&=((u32)0x00000038);    //清零某些位, |* z, a4 f2 I4 K& z8 X! t
     STM32_Flash_Regs->ACR.bit.LATENCY=2;    : S7 q" j* f& w6 E2 s3 r
    STM32_Flash_Regs->ACR.bit.PRFTBE=1;        //预取缓冲区使能    8 y4 A9 l9 n$ y

3 w$ Z! W* W* k' ~    /*  PLLCLK = 8MHz * 9 = 72MHZ ) */
5 D4 R7 T3 H2 J3 [9 `$ T     STM32_Rcc_Regs->cfgr.bit.PLLXTPRE=0;        //HSE分频器作为PLL输入  0:HSE不分频
- O7 P# }& n. U1 W$ k+ u# P0 f     STM32_Rcc_Regs->cfgr.bit.PLLSRC=1;        //HSE时钟作为PLL输入时钟1 N* N4 L( B4 Q3 D# D5 c# Q" ~- [. g
     STM32_Rcc_Regs->cfgr.bit.PLLMUL=RCC_PLL_9_B;        //PLL倍频系数9- y8 V) e2 @( z

% e% B  ]/ i; p3 O, ^    /* Enable PLL */) ^6 l0 V! S9 p+ p  N  M
    STM32_Rcc_Regs->cr.bit.PLLON=1;            // PLL使能    6 e+ [# o6 i: j" @: J
    while( !(STM32_Rcc_Regs->cr.bit.PLLRDY ) );    // PLL时钟就绪标志    PLL锁定后由硬件置1/ o: Q8 w  v+ G! o2 k4 r* @+ ?: d0 C
0 G$ n3 n8 s) c0 v
     /* Select PLL as system clock source */
0 o+ d% [, B! P; X     STM32_Rcc_Regs->cfgr.bit.SW=0;    ; \9 x$ v; R+ s0 R7 E, }
     STM32_Rcc_Regs->cfgr.bit.SW=2;        //RCC_SW_SYSCLK_PLL8 S2 {# E; `! W4 v+ s6 a& A+ F" J

" ^  P3 f4 F3 N# J9 W5 ^9 v  S    /* Wait till PLL is used as system clock source */    7 N/ [1 B7 E, f( P* F; g4 p9 O
     while(STM32_Rcc_Regs->cfgr.bit.SWS!=2);        //RCC_SWS_SYSCLK_PLL5 e3 I& T. v3 n4 ]) [
            : w, Y9 G  U/ I  \# v
    /* Enable GPIOA, GPIOB, GPIOC, GPIOD, GPIOE and AFIO clocks */
6 P  t" c7 v% c/ r1 H    STM32_Rcc_Regs->apb2enr.all |=(RCC_AFIOEN|RCC_IOPAEN|RCC_IOPBEN|RCC_IOPCEN|RCC_IOPDEN|RCC_IOPEEN);7 ^' C1 h5 q3 M& K0 b1 u
    $ M) I1 ?( a2 d- Y8 Q
    /* TIM2 AND CAN clocks enable */
# W+ n  P- z+ |    STM32_Rcc_Regs->apb1enr.all |=(RCC_TIM2EN| RCC_CANEN);    " w- M7 m& J4 N# D
8 W1 ~, M2 u% O) i. q: M& f, [
}
' h2 o9 e, h# h+ X" f/ M+ Y$ h$ _! B( I5 G7 }" M
出处:netjob
赞 收藏 1 评论4 发布时间:2008-9-3 20:22

举报

4个回答
北斗光寒 回答时间:2015-3-5 09:03:58
论坛居然08年就有了
bit 回答时间:2015-3-5 09:25:47
北斗光寒 发表于 2015-3-5 09:034 l) q" ?. t6 z5 j
论坛居然08年就有了
6 [6 t0 J% [; k# t4 R
是啊 当时还在学校
狂奔的蜗牛233 回答时间:2017-2-16 11:20:16
哪里能下载啊?话说这个论坛现在没啥人了吧
wofei1314 回答时间:2017-2-16 12:56:26
写的蛮详细的,不过F7可能用不了哦,可能需要慢慢的向HAL靠近& G$ N( {3 R1 c

( H( \2 W* A" c3 P才发现,这是08年的帖子,08年还没有HAL....
3 {. |; v  W" S1 j

所属标签

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
人形机器人运动控制、感知与智能配电
半导体创新技术与应用方向
EE架构与软件定义汽车
12V/48V 汽车智能配电(SPD)
区域控制单元(ZCU)与分区架构
关注我们
st-img 微信公众号
st-img 手机版