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

stm8小白学习笔记 02. 点亮led

[复制链接]
此号为经注册 发布时间:2017-9-10 22:44
  新建完工程后当然是点亮led,,这个可是单片机界hello world。  查看数据手册(感谢谷歌翻译)后得之,stm8会自动采用内部16M晶振,并八分频后作为系统时钟,% H, j' K; @  s; ^- x; s

1

1
; p1 t0 G7 {* R- L. V7 {' D
  所以先不用配置时钟,直接关注gpio就行了,在查看gpio相关寄存器之前,先拷贝一份简介
: ]/ c* P6 c# {( @, z
2 R! m$ Y) Z8 L+ ^1。 gpio简介0 T6 r/ [4 ?- T. K' Q2 n4 \5 ~+ t
通用输入/输出端口用于芯片与芯片之间的数据传输外部I / O端口最多可以包含8个引脚。 每个引脚可以单独使用编程为数字输入或数字输出。 另外,一些端口可能有备用功能如模拟输入,外部中断,片上外设的输入/输出。 只要一个备用功能可以一次映射到一个引脚。一个输出数据寄存器,输入数据存器,数据方向寄存器和两个配置寄存器与每个端口相关联。 特定端口将作为输入或输出取决于端口的数据方向寄存器的状态。# N! M/ g/ J. ^9 q
% }# F! @, }' T& q8 i. l
2 q, N3 P6 m# E0 b! J, V
  通过上面的简介可以使我们简单的了解gpio的功能。整理stm8 gpio相关寄存器,stm8把管脚分为A,B,C,D,E,F,I, G, H,每组最多8个引脚(这个应该和架构有关)每组有下面四个寄存器,每个寄存器8位。+ Y' P  I- }8 h. Q% C/ q

. ?5 j6 K! D3 V$ A  [ODR; /*!< Output Data Register  数据输出寄存器,从高到低每位对应每个引脚的输出值 */    5 M1 x- u) t( n
IDR; /*!< Input Data Register  数据输入寄存器,从高到低每位对应每个引脚的输出值*/
2 p$ d. m8 V" N2 v% {" @% rDDR; /*!< Data Direction Register 数据输入输出寄存器,从高到低每位对应每个引脚的数据输入输出模式(0为输入,1为输出)*/
' L& T0 j& r1 }; e  hCR1; /*!< Configuration Register 1 数据输入输出IO配置寄存器1, 可以配置输入的上拉,输出推挽等状态*/4 Z  p1 I: f9 F6 S/ O) R
CR2; /*!< Configuration Register 2 数据输入输出IO配置寄存器2,配置输入中断和输出速度 */
6 i  |/ p: b% }, a7 z4 ~( M( J, s, S- v0 R9 W' |; P" S

/ N8 {6 Q( \& U/ c' O8 p- m4 L/ \2.实例
8 z/ U8 n% ~+ i7 {3 C3 L7 H2 ?2 c4 W  G4 s% n9 A0 ^/ d
2.png 4 k, C& r& c6 d) F8 O/ K

* V6 L& F1 T+ o+ R从原理图上看led0 和l led1阴极分别连接到PC0和PC1上,所以我要把PC0和PC1设置为输出模式,推挽模式,速度不需要太快设置成2m就可以
- |% s7 ]: E$ @* `9 b) N/ d- w4 z  r, y  V" P
这是寄存器版的
3 ~5 D6 I% A8 X+ u' U7 `4 ~) Cvoid main(void)
: J1 [& n6 O/ ~& N1 q1 @# c. g* ^{/ n- _. N* U' B0 Q# \) K0 B
% x$ v) S: `; ]. r
  //init led0 led1  o; r+ v* ]* u4 E( h
  GPIOC->DDR |= 0x03;  //配置PC0 PC1为输出模式
* U: Y4 t: f% h2 a
! y  ^  P+ `. D. e" J- @8 R  GPIOC->CR1 |= 0x03;  //配置PC0 PC1为推挽模式
" R. g- F( }6 \/ x' T6 p( m  GPIOC->CR2 &= 0xfc;  //配置PC0 PC1输出速度2m
, i' ~9 k7 t4 ?1 z8 ?+ j- E- k. s  w1 h
4 `, ^- u) T" ^) [
  /* Infinite loop */! e8 y4 a; G5 M7 K4 j, Y- ~% @
  while (1)/ E8 w) p% |3 @. p
  {
' M7 b9 `% K* X2 }7 o5 C    GPIOC->ODR |= 0x03;    //熄灭( J9 W8 U# R6 T' o7 N0 i
    Delay(1600);
: l+ o$ b2 B! t  d) V$ {    GPIOC->ODR &= 0xfc;    //点亮     3 `# I" g6 L7 P3 X% s) J
    Delay(1600);
4 t6 r, C( ]9 t  }9 [; @% [; H" M& C7 G3 x/ \0 i% E
}
9 x9 ^: n1 m) D% m
3 x7 O5 R: I$ l2 _1 ^; }3 K9 [" G, i1 Z# D1 m' E8 |( D5 `$ L. Y3 h
这个是库函数版的( p5 w: z1 k, Q2 U2 c
void main(void)
% y8 v+ v. h$ |) E7 R  z{
% l# K# ]6 I% @: {) w- v0 G, m5 ]% h# T" N& N" H' p8 H
  //init led0 led1
" T% @0 K0 d3 c3 P" h! }  GPIO_Init(GPIOC, GPIO_Pin_0 | GPIO_Pin_1, GPIO_Mode_Out_PP_High_Slow);
, Z( X7 `( j$ j3 B- E  S# G$ `
: i: ^2 r7 C- ~& x# A! I  /* Infinite loop */* M1 G* l( i1 l8 |
  while (1)
1 |$ W1 {2 O/ K& K& n6 t5 Z  {) Z, x' A7 L. B) [
    GPIO_ToggleBits(GPIOC, GPIO_Pin_0 | GPIO_Pin_1);
# D$ H% C( K( |+ R* E* e    Delay(1600);
! W% R- e& M* H: o  P
' i3 y$ G$ e3 U4 b+ d: u2 |  }
7 {: X! u3 J- d}, C" s/ `4 J' W. g0 ]
' j5 B6 M) Z$ g1 }4 W' w8 V& L1 k# [# q

  q) V4 X6 w- L+ L. l, a6 T. P. y- f5 ?! j1 G
* q# ]$ m& W7 @" m' A! A( R
链接:https://pan.baidu.com/s/1c1UQa3m 密码:y9bk- j/ ]- @3 }; G0 U$ ~: |

. C+ I$ C/ V! d, I: W
1 收藏 评论2 发布时间:2017-9-10 22:44

举报

2个回答
a564656232 回答时间:2017-12-4 21:22:46
你这写,也太累了。
五哥1 回答时间:2017-12-5 00:28:46
写的不错,加油

所属标签

相似分享

关于意法半导体
我们是谁
投资者关系
意法半导体可持续发展举措
创新和工艺
招聘信息
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
关注我们
st-img 微信公众号
st-img 手机版