本帖最后由 toofree 于 2019-2-19 01:16 编辑 【STM8-SO8-DISCO】——3、IO测试,按键+点灯/ C- r! y$ f3 P o1 c9 o. f* n 本贴所用工程模板参考,【STM8-SO8-DISCO】——2、简单粗暴建工程模板https://www.stmcu.org.cn/module/f ... 9341&fromuid=3072975 g1 \7 ^7 |6 {5 n# Q" A (出处: 意法半导体STM32/STM8技术社区): t0 h( w# a8 Y( h& y8 O $ q4 u7 i, E: P0 M+ J- W 从户手册中原理图来看,按键B1和LED灯LD1都是高电平有效。% U$ p6 m7 ], N" P+ z/ m . I1 p( h" z4 f5 |; G8 p 用户手册中显示,STM8S001对应LD1的IO为PA3/PB5。 STM8S001对应按键B1的IO为PC3/PC4/PC5 从STM8S系列参考手册RM0016找到,IO对应5个寄存器 0 Y9 N# Q3 q9 ] 输出数据寄存器、寄入数据寄存器: B5 r9 q/ Z/ N- l/ d5 C $ Z' o: C3 A0 I) Q 方向寄存器、控制寄存器1 控制寄存器2 1 Q' Y" f3 j$ e; L5 M6 q IO模式设置列表4 G8 q$ D- I& _- d0 b1 o . Y3 l i! r$ A2 h! w7 [, I5 l, g 在函数库中IO械宏定义为12种情况,分别对应4种输入模式,8种输出模式。 4种输出模式为浮空/上拉、中断/IO的组合情况;8种输出模式是推挽/OD、快速/慢速、默认高/低电平的组合情况。/ D- o, y+ R% P! r" S7 D. } 在“main.c”中开头,添加LED、KEY宏定义。主函数“main()”中,设置IO模式。主循环中通过判断KEY的状态,来控制输出对应LED状态。+ H2 n" r6 ]7 Y. C4 k0 F 用到的几个函数也都比较简单。GPIO_Init(),设置IO工作模式,实际操作寄存器ODR、DDR、CR1、CR2。 ) A5 T- V) ?: g. j5 {! Z9 f* j GPIO_ReadInputPin()实际操作寄存器IDR GPIO_WriteHigh()、GPIO_WriteLow()操作寄存器ODR 3 p! U: l; g6 q K 编译、下载程序,加断点,Debug调试。- b8 ^& \9 i8 o 打开寄存器观察窗口,显示PA和PC相关寄存器,IAR观察寄存器时需要程序停止,不停的话不会随时更新。 当B1不按时,PC_IDR3/4/5为0,PA_ODR3为0。) m- y6 m( a* e' a 当B1按下时,PC_IDR3/4/5为1,PA_ODR3为1。 实验现象,按下B1,LD1点亮;抬起B1,LD1熄灭。/ W5 M' r6 | {" W# k2 s 对STM8S001的IO基本输入、输出功能测试完成,达到预期目标。 附上程序工程:(20190219工程有更新,之前上传的版本有误,不是工程模板生成的)8 h9 z- W, Q& d. T$ E2 V8 c% Z |
支持一下~ |
支持一下 |
学习了,一直不会玩STM8 |
我也直接用的工程模板 |
谢谢分享!!!! |
学习了,多谢分享 |
许欸额 |