STM8S学习笔记.pdf

  1. 1、本文档共30页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
STM8S学习笔记

STM8 学习笔记 一、 二、GPIO (初始复位,所有引脚为浮空输入) 1、工作模式 输入模式:浮动输入和带上拉输入 输出模式:推挽式输出和开漏输出 2、相关寄存器 ODR:输出数据寄存器 IDR:引脚输入寄存器 DDR:数据方向寄存器 CCR1、CCR2:输入、输出控制寄存器 3、端口X 输出数据寄存器(PX_ODR) 端口X 输入寄存器 端口X 数据方向(PX_DDR) (设定引脚为输入或输出) 端口X 控制寄存器1 (PX_CR1) 端口X 控制寄存器2 (PX_CR2) (输入时设定是否中断,输出时设定输出速度) 参考程序: //检测按键,若按下,则点亮LED,若抬起,则熄灭LED main() { PD_DDR = 0x08; PD_CR1 = 0x08; // 将PD3 设置成推挽输出 PD_CR2 = 0x00; while(1) // 进入无限循环 { if((PD_IDR 0x80) == 0x80) // 读入PD7 的引脚信号 { PD_ODR = PD_ODR 0xF7; // 如果PD7 为1,则将PD3 的输出设置成0,熄灭LED } else { PD_ODR = PD_ODR | 0x08; // 否则,将PD3 的输出设置成1,点亮LED } } } 三、系统时钟 内部时钟寄存器(CLK_ICKR) (选择要开启的内部时钟源,包含使能位和准备就绪标志位) 外部时钟寄存器(CLK_ECKR) 切换控制寄存器(CLK_SWCR)(切换时置位SWEN) 主时钟切换寄存器(CLK_SWR) (写此寄存器可设定系统主时钟源) 时钟分频寄存器(CLK_CKDIVR) 参考例程: void main(void) { //启用内部高速晶振且无分频16MHz CLK_SWCR|=0x02; //开启切换 CLK_ICKR|=0x01; //开启内部HSI while(!(CLK_ICKR0x02));//等待HSI 准备就绪 CLK_SWR=0xe1; //设定HSI 为主时钟源 while((CLK_SWCR 0x01)==0x01);//等待切换完成 CLK_CKDIVR=0x00; //设置分频,此处为HSI 不分频 CLK_SWCR=(~0x02); //关闭切换 delay_ms(500); CLK_CKDIVR=0x18; //启用内部高速晶振且8 分频(内部始终分频)2MHz //启用内部低速晶振且无分频 CLK_SWCR|=0x02; //开启切换 CLK_ICKR|=0x08; //开启LSI while(!(CLK_ICKR0x10));//HSI 准备就绪 CLK_SWR=0xd2; //LSR 为主时钟源 while((CLK_SWCR 0x01)==0x01);//等待切换完成 CLK_CKDIVR=0x00; //LSI 不分频 CLK_SWCR=(~0x02); //关闭切换 } 注:流程一般为 CLK_SWCR-CLK_ICKR/CLK_ECKR-等待开启完成-CLK_SWR- CLK_CKDIVR- CLK_SWCR,同一时钟源下,可写CLK_CKDIVR 直接分频时钟 主时钟状态寄存器(CLK_CMSR) (读此寄存器可知当前系统主时钟源) 三、8 位基本定时器(TIM4、TIM6) 注:技术手册上说TIM4 为加1 定时器,但从相关程序上看,应该为减1 定时器 控制寄存器1 (TIMx_CR1) 控制寄存器2 (TIMx_CR2) (TIM4 没有改寄存器) 从模式控制寄存器(TIMx_SMCR) 自动重装载寄存器(TIMx_ARR) 预

文档评论(0)

xxj1658888 + 关注
实名认证
内容提供者

教师资格证持证人

该用户很懒,什么也没介绍

领域认证该用户于2024年04月12日上传了教师资格证

1亿VIP精品文档

相关文档