本帖最后由 toofree 于 2019-2-19 01:16 编辑 【STM8-SO8-DISCO】——3、IO测试,按键+点灯 本贴所用工程模板参考,【STM8-SO8-DISCO】——2、简单粗暴建工程模板https://www.stmcu.org.cn/module/f ... 9341&fromuid=307297- i6 G& c1 h& O" o+ F (出处: 意法半导体STM32/STM8技术社区) 从户手册中原理图来看,按键B1和LED灯LD1都是高电平有效。 9 U2 b) X7 B9 e f0 G Q, [- m( K8 o: F 用户手册中显示,STM8S001对应LD1的IO为PA3/PB5。 # s4 w f4 k5 V, \ STM8S001对应按键B1的IO为PC3/PC4/PC5, W! y6 A3 M% @2 R 2 I- q5 h- Z+ T( X 从STM8S系列参考手册RM0016找到,IO对应5个寄存器 输出数据寄存器、寄入数据寄存器8 t* C9 V$ k. ~) ?4 V3 r & d0 }6 M* P4 |2 T" \) U5 ` 方向寄存器、控制寄存器1 ' t+ B% d) @6 g1 U$ n 控制寄存器24 M3 e. f6 u6 N' _! n- c IO模式设置列表 在函数库中IO械宏定义为12种情况,分别对应4种输入模式,8种输出模式。4 W2 Z% [( q) q5 ^ W! x4 ]2 x0 l 4种输出模式为浮空/上拉、中断/IO的组合情况;8种输出模式是推挽/OD、快速/慢速、默认高/低电平的组合情况。: w4 ~9 q: t, P3 I' |1 U* _! o ! [5 z4 X; l6 a* o- D 在“main.c”中开头,添加LED、KEY宏定义。主函数“main()”中,设置IO模式。主循环中通过判断KEY的状态,来控制输出对应LED状态。 4 T7 [( Y* R2 ]$ f+ @ 用到的几个函数也都比较简单。GPIO_Init(),设置IO工作模式,实际操作寄存器ODR、DDR、CR1、CR2。& Z/ q6 f; ~* |) z 9 o' B9 g7 m, @: W a9 V GPIO_ReadInputPin()实际操作寄存器IDR GPIO_WriteHigh()、GPIO_WriteLow()操作寄存器ODR6 c+ ~' c5 m# }2 ?% ~ p 编译、下载程序,加断点,Debug调试。 打开寄存器观察窗口,显示PA和PC相关寄存器,IAR观察寄存器时需要程序停止,不停的话不会随时更新。" Q J0 h; c/ Q+ ~' Q9 h 当B1不按时,PC_IDR3/4/5为0,PA_ODR3为0。 * H8 E" }* d) x' L1 q% | 当B1按下时,PC_IDR3/4/5为1,PA_ODR3为1。$ @- U; m& J& J9 c 实验现象,按下B1,LD1点亮;抬起B1,LD1熄灭。 对STM8S001的IO基本输入、输出功能测试完成,达到预期目标。4 ^6 r! _9 w% O 附上程序工程:(20190219工程有更新,之前上传的版本有误,不是工程模板生成的) |
支持一下~ |
支持一下 |
学习了,一直不会玩STM8 |
我也直接用的工程模板 |
谢谢分享!!!! |
学习了,多谢分享 |
许欸额 |