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

【STM8-SO8-DISCO】——3、IO测试,按键+点灯

[复制链接]
七哥 发布时间:2019-2-18 00:53
本帖最后由 toofree 于 2019-2-19 01:16 编辑
! H7 n6 z! A+ \: Q/ _5 g5 B6 k, E% ]" N( R1 f- F
【STM8-SO8-DISCO】——3、IO测试,按键+点灯! ^4 K4 u4 _+ u8 ?- d
- q  {( o, W( g' M6 f- V7 q* Z
本贴所用工程模板参考,【STM8-SO8-DISCO】——2、简单粗暴建工程模板https://www.stmcu.org.cn/module/f ... 9341&fromuid=3072979 f! r- _8 `' R
(出处: 意法半导体STM32/STM8技术社区)) X) b9 A1 {6 W! `  n
% ^7 h: u3 _( c) W5 z) B1 t
从户手册中原理图来看,按键B1和LED灯LD1都是高电平有效。: ^" J2 T9 ^/ M
01.jpg
5 J9 T7 |9 q: `) k9 M2 o6 Y) Y: Q
4 Q& t4 K& R0 ]: N8 r% l, s$ }3 T9 K
用户手册中显示,STM8S001对应LD1的IO为PA3/PB5。2 Z' F: Y" R: {! M! v& K
02.jpg : _) m; V. ~' K
2 t) L$ w8 V) R
STM8S001对应按键B1的IO为PC3/PC4/PC51 Y8 M) I9 _( x6 b% p
03.jpg
- y' ?( \7 Y/ M
+ o3 \% t5 l1 j4 x- G从STM8S系列参考手册RM0016找到,IO对应5个寄存器
" d: o, _$ l! ?( G 11.jpg
% n+ v+ L3 y9 K; d: {' |3 e/ q9 K+ c# P! l
输出数据寄存器、寄入数据寄存器: h5 y0 l9 E- ~. j+ q
12.jpg 4 C# u/ K1 b) ]9 F" ]( ]
4 u1 Q8 v6 ~7 }  t5 x
方向寄存器、控制寄存器1
. ~  h' R6 w- S/ a" G' A 13.jpg & J; J2 W  Z' N; v- l
) h5 m. r! L! f+ t. U: H3 P/ M
控制寄存器21 _" r. O/ ]4 d  m$ f
16.jpg % ?4 L2 t, Q0 G8 |$ t

7 z/ V$ _% N4 x) fIO模式设置列表1 w0 L; S  ?  W& ]% |/ p9 n+ {; ]& P
15.jpg ( n1 J2 y! P0 ~7 |8 e/ O+ k
% C" M0 K0 Y$ {$ t( w; J& q+ U
在函数库中IO械宏定义为12种情况,分别对应4种输入模式,8种输出模式。
6 v, \, |9 A' v4种输出模式为浮空/上拉、中断/IO的组合情况;8种输出模式是推挽/OD、快速/慢速、默认高/低电平的组合情况。# @& B/ x. ]' _( f7 N$ k# o1 o- W
14.jpg
2 [( h( x# }# |; Q1 i$ D4 B
: |& @+ S- F1 X2 W) `在“main.c”中开头,添加LED、KEY宏定义。主函数“main()”中,设置IO模式。主循环中通过判断KEY的状态,来控制输出对应LED状态。
: h" F# Q* E1 L$ l- L 21.jpg / R1 O5 d4 K* k( k* l

9 s4 E8 D1 @/ G+ U用到的几个函数也都比较简单。GPIO_Init(),设置IO工作模式,实际操作寄存器ODR、DDR、CR1、CR2。
+ y1 o0 b7 A( P 22.jpg 2 f& M% H9 U& E! L# |; Y! {& {7 A3 F

0 I* `7 @0 o2 MGPIO_ReadInputPin()实际操作寄存器IDR0 l$ a6 S9 ?" R$ |- m; j
23.jpg * I" w. ^8 [, |, M. t4 q

1 G  k+ l0 H( k) V- `1 WGPIO_WriteHigh()、GPIO_WriteLow()操作寄存器ODR6 a! ~+ V3 |9 L) R7 h, j
24.jpg 1 [0 C3 T0 |% Y9 p' |, o% ^

5 d3 K& j" Y- }* C* z+ g编译、下载程序,加断点,Debug调试。
! B: a) M; }$ n! b& I 31.jpg
% G, K# B2 j" [' u
$ ?5 M! u# c0 u2 P0 U打开寄存器观察窗口,显示PA和PC相关寄存器,IAR观察寄存器时需要程序停止,不停的话不会随时更新。
" @9 k; @* y% G8 l, K1 e当B1不按时,PC_IDR3/4/5为0,PA_ODR3为0。6 c# n" f3 I, N, {# l" N! t3 U
32.jpg 6 r! a$ u. R+ q! j  Q
8 Y5 e3 S' v7 {, t; C4 r% X
当B1按下时,PC_IDR3/4/5为1,PA_ODR3为1。
$ g6 r* Y4 P: R; ~9 t 33.jpg % b0 P& s: ^/ X- @( O% F
$ i' P% U) O2 J# \) b, R# u
实验现象,按下B1,LD1点亮;抬起B1,LD1熄灭。/ }7 k5 C; s8 Z# r8 c0 I. H8 U( i
对STM8S001的IO基本输入、输出功能测试完成,达到预期目标。
, k: O; u& S5 E# ]# }4 y! @+ Q/ f% s9 n* G1 W
附上程序工程:(20190219工程有更新,之前上传的版本有误,不是工程模板生成的)3 n9 Y$ h8 h; e, W# p
STM8S_StdPeriph_GPIO_IN.rar (258.14 KB, 下载次数: 24)
收藏 1 评论7 发布时间:2019-2-18 00:53

举报

7个回答
STM1024 回答时间:2019-2-18 14:03:47
支持一下~
Kevin_G 回答时间:2019-2-19 11:39:51
支持一下
CC4 回答时间:2019-2-21 10:01:54
学习了,一直不会玩STM8
taiyangshendi1 回答时间:2019-2-27 19:32:55
我也直接用的工程模板
ml8866 回答时间:2019-3-17 20:09:10
谢谢分享!!!!
xujiantj 回答时间:2019-3-18 15:31:01
学习了,多谢分享
EdisonZheng-161 回答时间:2019-5-19 20:45:26
许欸额
关于意法半导体
我们是谁
投资者关系
意法半导体可持续发展举措
创新和工艺
招聘信息
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
关注我们
st-img 微信公众号
st-img 手机版