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

Snippet - 熟悉的感觉一点点

[复制链接]
arm8686 发布时间:2015-2-8 22:20
本帖最后由 arm8686 于 2015-2-8 22:22 编辑
' r. }# b' j' v& E* I& {7 w, E/ r8 F2 j: u, Z- k- n
        眼前不是我熟悉的双眼( K2 U  o' }4 _9 ?
        陌生的感觉一点点$ a$ s; w. m/ v) d  z$ t4 j
        但是他的故事我怀念, `3 b9 p3 n, D$ |
        回头有一群朴素的少年" l4 I- q+ I. @: t
        轻轻松松地走远
9 K! ]3 x2 Q3 N; h% n        不知道哪一天再相见& ~! Z1 Q! Q# f0 u( n' b
            —— Beyond 《大地》(国语版)
: t8 k' |. b1 R3 A; S& e" R- j4 v# D2 @) o& w
(以下算是华丽的分割线)
. @# L+ l7 H( b; I0 d3 q# i/ S寄存器直接访问 —— 寄存器直接访问 —— 寄存器直接访问 —— 寄存器直接访问
2 [) ^0 f+ r9 R: S! }) l* [(以上算是华丽的分割线)
  q" R# U# R' ]1 w# i7 i% |% k. |& [8 [) ^, i
这就是标题中所言的【熟悉的感觉】!) {1 [/ `) T, v0 T! L

: Z# v5 m3 [1 L2 t# o7 Z8 _STM32SnippetsF0Example Code
$ y& N$ I6 h+ _$ W/ t7 a' K    snippets covering STM32 F0 serie# K# {  b6 y/ R6 i# K

+ V- W/ q- ^+ q4 Q1 D8 cKey Features:
' `. K, \; u0 \. M" w% L
0 ~7 X4 {# M4 a8 k# U; P4 L    1.  Complete free C source code firmware examples for STM32F0xx microcontrollers
6 K  r( T" x; S% O$ Z
% i. E; f8 r+ H( c. B3 x" e    2.  Basic examples using register direct-accesses as defined in CMSIS Cortex-M0 Device Peripheral Access Layer Header File (sm32f0xx.h)  `4 R1 q4 z. h8 Y& C
& }. J+ h# d/ n8 M1 f/ j. l
    3. Self-documented code4 v% y+ o, o. a  `! E+ c
    4. Compliant with MISRA* @' |. c6 F/ F0 T
    5. Compliant with EWARM and MDK-ARM; ]. T3 Z( q+ U3 ~9 f3 C( b; v
$ _( w( Z' i/ c
! S# [0 n. u$ G" W! I
粘贴一段代码,示例一下:
2 ?0 ^& o& k7 L% X
  1. /**- H; J6 v' N- S9 w
  2.   * @brief  This function configures USART1.
    . r" t; t+ H1 }, ]3 s. T# l) D6 h! a/ {
  3.   * @param  None
    0 f( i2 a) P% o( i& Y
  4.   * @retval None; `# e/ \  l8 k' e  {' F, ]. `
  5.   */% ~# s$ u- P6 \8 X. O
  6. __INLINE void Configure_USART1(void)' D! k9 L3 }- |% _
  7. {
    7 a! g) R; @2 W( T) I8 J, Y% A/ S
  8.   /* Enable the peripheral clock USART1 */$ X" O! j. s( u8 M2 W3 k$ O
  9.   RCC->APB2ENR |= RCC_APB2ENR_USART1EN;: w) R" j4 \4 m# l, [

  10. ! M" H7 t, W% v( `) {5 F; F
  11.   /* Configure USART1 */; [$ V4 Q( k# b0 J4 O8 f) |: p
  12.   /* (1) oversampling by 16, 9600 baud */
    # ]2 q' j2 q( W$ n! W/ _
  13.   /* (2) 8 data bit, 1 start bit, 1 stop bit, no parity */
    / j! [8 Q/ N8 h7 q5 Z
  14.   USART1->BRR = 480000 / 96; /* (1) */- A6 d5 V- ^+ g- S0 p
  15.   USART1->CR1 = USART_CR1_TE | USART_CR1_UE; /* (2) */
    " ?3 Q9 R1 _; L) e' F4 E
  16.   ' n4 P: _, l! F6 S
  17.   /* polling idle frame Transmission */# B% p2 [4 v9 H0 @" o
  18.   while((USART1->ISR & USART_ISR_TC) != USART_ISR_TC)  B9 Q9 h9 g3 W% A' g8 i
  19.   {
    * t2 x  d, t( I. m- g& z; g1 S
  20.     /* add time out here for a robust application */
    + m# O! O2 Z3 L, f. b1 o
  21.   }
      m% L, M& E4 {% X/ q5 u5 C
  22.   USART1->ICR |= USART_ICR_TCCF;/* clear TC flag */3 G9 u& V+ v4 C! {- N- r. f
  23.   USART1->CR1 |= USART_CR1_TCIE;/* enable TC interrupt */0 K2 p6 ^+ j) r+ d
  24.   
    : K# V  P/ ?# ^& R# e5 P, M
  25.   /* Configure IT */
    9 _8 |9 S1 B: N9 t
  26.   /* (3) Set priority for USART1_IRQn */
    * l9 h& b+ l. r7 h  H
  27.   /* (4) Enable USART1_IRQn */% U0 W) s- E1 V9 V3 V
  28.   NVIC_SetPriority(USART1_IRQn, 0); /* (3) */
    ; z% e* u' L# j3 [- z) o8 @$ r/ S. H# E$ C
  29.   NVIC_EnableIRQ(USART1_IRQn); /* (4) */
    6 m! D, V$ F* [7 S4 F; g
  30. }
复制代码
这一行有点意思:
* e) h# ?% q9 x$ g! \* T9 U/ I
  1.   USART1->BRR = 480000 / 96; /* (1) */
复制代码
这就是 48000000/9600 去掉了两个 0。比手算出来再赋值,好理解一点。1 h" {+ f# {" M/ @5 m* t9 c* B# S6 R+ l

4 ~9 k6 v6 ]' F& h. E7 L另外,在 system_stm32f0xx.c 文件中有 SystemCoreClock 作为全局变量,不过还没有通过某个 .h 文件 extern 出来。- S$ e( [3 _2 B; N

3 l1 @6 G- G  I6 P# w6 j: S* i( E( q  ]7 e& G' F- D
* a1 M  D. W( @7 n# I& c$ W
赞 收藏 评论5 发布时间:2015-2-8 22:20

举报

5个回答
damiaa 回答时间:2015-2-9 08:51:29
寄存器直接访问
arm8686 回答时间:2015-2-9 11:36:05
一些对比:7 M$ T% J  v0 ?8 u, i) C

. m0 W; m) P1 {: q9 v5 G

STM32 Snippet

STM32 Snippet
3 |2 |  S$ `* ]9 E+ F
. q8 Y2 r& w# d5 A8 i

STM32 Snippet

STM32 Snippet

3 W. E% C) C- b' _
arm8686 回答时间:2015-2-10 10:51:14
看来我还真有当校对的潜质
1 |0 g/ _5 B" K0 c/ S! m
; N. \3 Z) v% |2 O) p

STM32F072RBT6 RM0091

STM32F072RBT6 RM0091
jbs314 回答时间:2015-2-10 10:56:31
简洁,运行速度快
netlhx 回答时间:2015-2-11 13:52:57
arm8686 发表于 2015-2-10 10:51  o& A0 `: l( Q5 r' M- `( B
看来我还真有当校对的潜质
5 D* x5 |: |4 S" l) ?# q
亮了
关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
人形机器人运动控制、感知与智能配电
半导体创新技术与应用方向
EE架构与软件定义汽车
12V/48V 汽车智能配电(SPD)
区域控制单元(ZCU)与分区架构
关注我们
st-img 微信公众号
st-img 手机版