
本帖最后由 toofree 于 2019-2-19 01:16 编辑 1 u7 S8 k6 N6 G/ r* h 【STM8-SO8-DISCO】——3、IO测试,按键+点灯 本贴所用工程模板参考,【STM8-SO8-DISCO】——2、简单粗暴建工程模板https://www.stmcu.org.cn/module/f ... 9341&fromuid=307297 (出处: 意法半导体STM32/STM8技术社区)- e! t( o" S$ P* o$ ^6 Y5 I ' I$ {3 s6 ~# { }3 o* ]2 q 从户手册中原理图来看,按键B1和LED灯LD1都是高电平有效。( [4 G* A, P8 a ![]() 用户手册中显示,STM8S001对应LD1的IO为PA3/PB5。, J$ ~6 t9 R5 P5 ^% O ![]() STM8S001对应按键B1的IO为PC3/PC4/PC5" }* e: l( m0 |: E/ a( [% W ![]() # i/ D% L7 p! M3 b9 w+ g8 `1 }- q 从STM8S系列参考手册RM0016找到,IO对应5个寄存器. p" ]" E( x9 v ![]() 输出数据寄存器、寄入数据寄存器" m& `# E* P, o* ] ![]() 6 t4 \, J5 H7 `; K/ w w" X 方向寄存器、控制寄存器1 ![]() . |8 } O/ N4 s- `0 L 控制寄存器2 ![]() IO模式设置列表# R% i4 N* V$ }) R2 E ![]() 8 v% j$ u ?5 ]$ a1 Y6 v1 i" o9 \" M 在函数库中IO械宏定义为12种情况,分别对应4种输入模式,8种输出模式。 q+ _' t& `2 `2 A- t 4种输出模式为浮空/上拉、中断/IO的组合情况;8种输出模式是推挽/OD、快速/慢速、默认高/低电平的组合情况。 ![]() 在“main.c”中开头,添加LED、KEY宏定义。主函数“main()”中,设置IO模式。主循环中通过判断KEY的状态,来控制输出对应LED状态。 ![]() 用到的几个函数也都比较简单。GPIO_Init(),设置IO工作模式,实际操作寄存器ODR、DDR、CR1、CR2。2 ^5 Q* \3 j+ V ![]() GPIO_ReadInputPin()实际操作寄存器IDR* K# B1 G) k, B( F+ ]! E# p& k8 \ ![]() ; r# F4 G$ o+ y6 P; F! a& C# C) y GPIO_WriteHigh()、GPIO_WriteLow()操作寄存器ODR ![]() 编译、下载程序,加断点,Debug调试。 ![]() 打开寄存器观察窗口,显示PA和PC相关寄存器,IAR观察寄存器时需要程序停止,不停的话不会随时更新。& W* O* {. r7 n$ C& { 当B1不按时,PC_IDR3/4/5为0,PA_ODR3为0。 ![]() 当B1按下时,PC_IDR3/4/5为1,PA_ODR3为1。 ![]() 实验现象,按下B1,LD1点亮;抬起B1,LD1熄灭。/ K& m8 Q& B7 X: N6 t 对STM8S001的IO基本输入、输出功能测试完成,达到预期目标。 附上程序工程:(20190219工程有更新,之前上传的版本有误,不是工程模板生成的)5 z( L. [0 M; \, d0 w ![]() |
支持一下~![]() |
支持一下 |
学习了,一直不会玩STM8 |
我也直接用的工程模板 |
谢谢分享!!!!![]() ![]() ![]() ![]() |
学习了,多谢分享 |
许欸额 |
STM8自学笔记(推荐STM8很好的入门电子书)
基于STM8的DALI (数字可寻址调光协议)
分享STM8 风驰光盘的资料,是完整的(包括原理图+例程+PDF注释)
《无刷直流电机控制应用 基于STM8S系列单片机》
STM8S库函数中文参考 小软件
【资料分享】STM8L的智能手持血糖监测设备的源码
基于STM8S207工程模板
【培训资料】STM8系列PPT培训资料
STM8S 直流电机例程及相关资料
无刷直流电机控制应用+基于STM8S系列单片机---电子书