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

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

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

1

1

9 \' y2 T! Q: P7 d) p; Z, b  所以先不用配置时钟,直接关注gpio就行了,在查看gpio相关寄存器之前,先拷贝一份简介5 a- g8 x3 j1 r, \! j7 e

4 D/ f* \' K- h1。 gpio简介6 w, }1 I5 M5 J, N5 g) ?
通用输入/输出端口用于芯片与芯片之间的数据传输外部I / O端口最多可以包含8个引脚。 每个引脚可以单独使用编程为数字输入或数字输出。 另外,一些端口可能有备用功能如模拟输入,外部中断,片上外设的输入/输出。 只要一个备用功能可以一次映射到一个引脚。一个输出数据寄存器,输入数据存器,数据方向寄存器和两个配置寄存器与每个端口相关联。 特定端口将作为输入或输出取决于端口的数据方向寄存器的状态。
) h" d9 x" T' `9 k1 f1 f0 `7 a
/ p1 h, e, h* q% I& `) J7 h3 e. x& c+ }
  通过上面的简介可以使我们简单的了解gpio的功能。整理stm8 gpio相关寄存器,stm8把管脚分为A,B,C,D,E,F,I, G, H,每组最多8个引脚(这个应该和架构有关)每组有下面四个寄存器,每个寄存器8位。* h+ ]' c" P0 M

  w( N  [7 ~' z" h' |( tODR; /*!< Output Data Register  数据输出寄存器,从高到低每位对应每个引脚的输出值 */   
0 d9 N9 D+ n: g7 ^: T. @( HIDR; /*!< Input Data Register  数据输入寄存器,从高到低每位对应每个引脚的输出值*/. a$ T2 o0 y- J
DDR; /*!< Data Direction Register 数据输入输出寄存器,从高到低每位对应每个引脚的数据输入输出模式(0为输入,1为输出)*/
% s  \0 q# V& s! \CR1; /*!< Configuration Register 1 数据输入输出IO配置寄存器1, 可以配置输入的上拉,输出推挽等状态*/& E/ P% i1 H9 L
CR2; /*!< Configuration Register 2 数据输入输出IO配置寄存器2,配置输入中断和输出速度 */
6 V% A- @1 s5 A" r9 w* k" \2 O0 ]+ S" I7 L$ d' E. ~% F
- ?. L9 u" V! h  E& c
2.实例
) x7 J4 v% O& a  s2 A- n
5 |* z6 h$ }! J3 J& a 2.png
: Z7 n) R5 a( p6 F' Z
: U0 S( k5 v2 U从原理图上看led0 和l led1阴极分别连接到PC0和PC1上,所以我要把PC0和PC1设置为输出模式,推挽模式,速度不需要太快设置成2m就可以
5 Q6 |7 ^2 P9 E8 B: C8 R
8 S9 b9 `% x1 v8 H  K/ A这是寄存器版的
; q. k: O6 Q- K% D5 f& @9 bvoid main(void)
$ D) I; A/ I8 R{% O1 r" }, ~, `: ]
) D6 S/ J9 W  I: d/ o
  //init led0 led1. G2 e  g% Y- h- J
  GPIOC->DDR |= 0x03;  //配置PC0 PC1为输出模式
8 c1 v; @& j$ `/ s( ^& e7 X2 h# h( S, l: s
  GPIOC->CR1 |= 0x03;  //配置PC0 PC1为推挽模式: B9 c4 R# i' b, l
  GPIOC->CR2 &= 0xfc;  //配置PC0 PC1输出速度2m7 F# ]+ r; R' W4 k1 V( |

2 ?" B% ^! j: i8 A9 @* ^1 R5 M, ]1 H( C
  /* Infinite loop */
% E5 O) a6 k2 a$ r" q  while (1)  i  e7 u  e/ e/ ^& a# @. P9 c
  {' _" P6 Q: j8 M, h3 J* @' s" v+ C
    GPIOC->ODR |= 0x03;    //熄灭
2 \# ]; ^' h& i! B$ m3 k; ~9 \- @    Delay(1600);$ t$ P' Z) g- u& _
    GPIOC->ODR &= 0xfc;    //点亮     4 R: X# I# O9 W2 m" L' C" _
    Delay(1600);
# m7 C% X$ ~% i; D7 N  }
9 Y7 [$ R9 |1 J( d8 }# L}
' H( [* U' _1 l1 {! |4 Q% a# p  ]# L( Y/ X' Z: {- D( W! j

1 V1 _. L4 F; {7 v" L8 J' V4 Z这个是库函数版的. F' h% B5 H4 K9 J2 X% J+ |7 d1 o8 n
void main(void)
. o$ K! u$ H$ r  }{# B. n& A+ z* H6 A: R# d# h
0 q8 m/ _0 e' O0 }, [6 P6 {, h  [8 R
  //init led0 led1/ V& `! S8 n  R; o
  GPIO_Init(GPIOC, GPIO_Pin_0 | GPIO_Pin_1, GPIO_Mode_Out_PP_High_Slow);
$ n2 R8 ]. b; l2 V# N) w+ U+ p" S" B3 g+ E! M
  /* Infinite loop */
! b: V+ Q7 ^' z  while (1)
' U3 V5 V. ?( F  {
# l1 n8 D& w$ Q    GPIO_ToggleBits(GPIOC, GPIO_Pin_0 | GPIO_Pin_1);0 G8 j6 n3 u" N" E: Z
    Delay(1600);
1 d$ i& N5 R  P( r& e- i6 H# v3 k: ?% ^5 R+ e
  }
+ v, ~2 C4 \  [" N# l) n% a}* V7 L. k& w) J6 J$ y' Q, c
# _3 `  L' z9 K) y+ b" e

) {/ m* D! u# O1 w4 ?1 I4 ?  C6 T: H& {) t2 r4 J) H+ A
8 Q3 W2 \4 I- i% y
链接:https://pan.baidu.com/s/1c1UQa3m 密码:y9bk
$ N- s9 M5 T: D1 Q$ a0 `. H2 t' a  ]/ X5 J. v4 p9 s/ M
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 手机版