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

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

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

1

1
8 ]) e+ A! E; H
  所以先不用配置时钟,直接关注gpio就行了,在查看gpio相关寄存器之前,先拷贝一份简介
$ f. M0 T  s1 A3 t  u
& E8 i5 n; g& _. R/ t1。 gpio简介
9 t  E% C; B! X9 c通用输入/输出端口用于芯片与芯片之间的数据传输外部I / O端口最多可以包含8个引脚。 每个引脚可以单独使用编程为数字输入或数字输出。 另外,一些端口可能有备用功能如模拟输入,外部中断,片上外设的输入/输出。 只要一个备用功能可以一次映射到一个引脚。一个输出数据寄存器,输入数据存器,数据方向寄存器和两个配置寄存器与每个端口相关联。 特定端口将作为输入或输出取决于端口的数据方向寄存器的状态。( `5 _& r( B1 e' n: ~

2 B  |1 D. ]1 @# i  s. R- a% }3 t, I1 q/ ~
  通过上面的简介可以使我们简单的了解gpio的功能。整理stm8 gpio相关寄存器,stm8把管脚分为A,B,C,D,E,F,I, G, H,每组最多8个引脚(这个应该和架构有关)每组有下面四个寄存器,每个寄存器8位。
2 p, P* g, z1 ^5 v7 O; j4 S' ?/ b0 _0 H' I1 U1 F( T0 C
ODR; /*!< Output Data Register  数据输出寄存器,从高到低每位对应每个引脚的输出值 */    " m5 o+ X4 Z& ~0 a' B5 L
IDR; /*!< Input Data Register  数据输入寄存器,从高到低每位对应每个引脚的输出值*/% _9 P# J, ^2 S1 K& [
DDR; /*!< Data Direction Register 数据输入输出寄存器,从高到低每位对应每个引脚的数据输入输出模式(0为输入,1为输出)*/" r( z/ O) H  F3 \/ h/ G
CR1; /*!< Configuration Register 1 数据输入输出IO配置寄存器1, 可以配置输入的上拉,输出推挽等状态*/
& Q5 I: I3 Z' g8 I1 MCR2; /*!< Configuration Register 2 数据输入输出IO配置寄存器2,配置输入中断和输出速度 */
- S, x6 f4 [8 m+ Q5 o1 E$ n5 h- s9 L7 {4 k6 Q1 c
2 n* h( I! s, Z/ ^9 }
2.实例
9 y5 y0 Y" H" S) o6 i% Q# d* l# w, z, j  w0 h
2.png
* d2 y1 Z! A( w+ i4 e
. V- {. B4 P% a/ t1 ~* d从原理图上看led0 和l led1阴极分别连接到PC0和PC1上,所以我要把PC0和PC1设置为输出模式,推挽模式,速度不需要太快设置成2m就可以$ _4 {4 F2 M  Z* B7 J+ l) |) S

  n+ x) J( u3 Z* F这是寄存器版的% z! I: x" ~3 h+ g! R. B0 a
void main(void)
  n5 T! j9 f4 O- z4 P0 f1 D$ l{2 T/ I5 [, B( B# z. }
. \  |5 H; F$ ~1 q( G4 ~# C
  //init led0 led1- B* E$ V" K  C( O2 N- C; P1 s5 M4 J- J
  GPIOC->DDR |= 0x03;  //配置PC0 PC1为输出模式% {, A. r  j& o4 u! V0 p
8 Q* V9 V3 R5 o; s; v
  GPIOC->CR1 |= 0x03;  //配置PC0 PC1为推挽模式+ }5 _. H8 T; ~  z6 G7 l. j
  GPIOC->CR2 &= 0xfc;  //配置PC0 PC1输出速度2m4 O! H4 p4 v( e- N2 m7 i. Q
  H& u* D0 N* m- a8 |& K7 ^

- j  |0 A7 n4 `- X$ |  /* Infinite loop */
9 ]2 M) w! q( i$ P4 H2 c9 c1 V  while (1)
# W  t4 a& ^% ]( u. Y6 J7 ^* h4 \  {  ~1 z2 {# n# u
    GPIOC->ODR |= 0x03;    //熄灭! @7 P4 o1 i* C/ A. d. C( l
    Delay(1600);' T- R" s5 b: v/ ]* ?4 y# M* Y
    GPIOC->ODR &= 0xfc;    //点亮     ' V4 E) z, `7 ~7 D
    Delay(1600);
  E$ m  s- E! I  }
' h1 o9 _; n9 q, w}
& B3 }, ]% b' m! }4 `$ O9 b4 V" h  o! h  l0 }9 G
& M; k+ y) b  j# Y9 w9 ?+ n) T
这个是库函数版的& ]1 ~" @9 Y' g( }; S4 @- K. k
void main(void)
$ k3 N9 N/ _- x, A{
/ z+ b3 n% s$ v1 [, U+ T/ D
" `2 t% p) [1 N' @9 }9 a  //init led0 led1& j7 m7 A3 k* g7 U
  GPIO_Init(GPIOC, GPIO_Pin_0 | GPIO_Pin_1, GPIO_Mode_Out_PP_High_Slow);
% u$ B+ X& b9 |, t* @" A. @' x0 @
  /* Infinite loop */% A! P& t9 j  A$ P
  while (1)3 {- X( |( \, ^& }' |& `
  {. S6 z( M% \  b
    GPIO_ToggleBits(GPIOC, GPIO_Pin_0 | GPIO_Pin_1);/ ~! ]# M: r4 Y; S. x7 G
    Delay(1600);8 F4 \& h) d+ U0 L6 C$ Y% M2 {
! R: j' ~: j8 b- s# u
  }; g+ D6 R5 {- q# N
}
; [1 f8 ~6 m, T% ?$ s% A& g
" d$ m; r- G# q, N. h+ t3 V' b! }0 p; Q, g
0 k8 s& w; }: l/ @* ?' K! L

: s. d+ t8 u/ M$ J) U链接:https://pan.baidu.com/s/1c1UQa3m 密码:y9bk
0 E4 u6 M3 z, Q" g* A9 g2 l- R& ~# r" |+ s& m* S" _2 Q8 }
赞 1 收藏 评论2 发布时间:2017-9-10 22:44

举报

2个回答
a564656232 回答时间:2017-12-4 21:22:46
你这写,也太累了。
五哥1 回答时间:2017-12-5 00:28:46
写的不错,加油
关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
人形机器人运动控制、感知与智能配电
半导体创新技术与应用方向
EE架构与软件定义汽车
12V/48V 汽车智能配电(SPD)
区域控制单元(ZCU)与分区架构
关注我们
st-img 微信公众号
st-img 手机版