推荐阅读最新更新时间:2024-11-09 19:02
STM8 时钟切换
HSE、HSI、LSI 都可以作为系统主时钟源,STM8 单片机复位以后默认 HSI 的 8 分频作为系统主时钟,其原因是 HSI 稳定时间短,而其 8 分频又可以保证系统在较差的 VDD 条件下安全启动。在系统运行的过程中可以切换系统的主时钟源。系统时钟源的切换有 2 种方式:自动切换、手动切换。 自动切换可以使用最少的指令来完成主时钟源的切换,用户程序可以处理其他事物而不用关心确切的切换时间;手动切换在硬件准备好之后不立即切换,允许用户精确的控制切换发生的时间。 自动切换的步骤为: 1.设置切换控制寄存器 CLK_SWCR 中的 SWEN 位,使能时钟切换。 2.设置主时钟切换寄存器 CLK_SWR,选择目标时钟源
[单片机]
STM8问题汇总
1.在STVD上开发,Build提示bad struct/union operand 这是因为工程文件太大的缘故,对提示的没有使用到的头文件,源文件进行删减即可解决问题 2.DEBUG按钮点击后提示 ERROR:before starting debug session,please,select a target 如图所示,选swim ST-LINK然后确认即可 3.在IAR上函数输入的参数有错,参数实际值不对或为0 有一个函数的参数类型有多个使用uint8_t作为参数类型声明时候,出现传入的参数不对的情况,uint8的声明在其他文件内,后改为int暂时解决。该问题与多地方定义了uint8_t声明有关系,有
[单片机]
STM8单片机的中断控制和中断功能
内部中断:一般是由硬件错误或者运算过程中出错引起的,一般是不可避免的; 外部中断:是处理器的外设发出的中断请求,如定时器中断,UART 接收中断,外部中断一般都可以通过中断控制器进行屏蔽; 1.ITC 功能概述: ……所有 IO 引脚都具有外部中断能力,每个端口都有独立的中断向量以及独立的标志;外设中断能力; ……软件中断能力(TRAP) ……具有灵活的优先级和中断等级管理,支持可嵌套和同级中断管理: ——多达 4 个软件可编程的嵌套等级;——最多有 32 个中断向量,其入口地址由硬件固定;——2 个不可避免的中断:RESET,TRAP;——1 个不可避免的最高优先级硬件中断 TL1; 2. 中断的主要功能 1.
[单片机]
stm8编程tips(stvd)
编译完成时显示程序占用的flash和ram大小 将附件压缩包中的mapinfo.exe解压到stvd的安装路径stvd中 在工程上点右键选settings 右侧的选项卡选择Linker,将category的下拉框选成output,然后在Generate Map file前打勾 再将选项卡上选择到Post-Build,在下方文本框中新粘贴一行内容mapinfo $(OutputPath)$(TargetSName).map 点OK按键确定,菜单File- save workspace,保存工程 重新编译下,你就能看到flash,ram,eeprom占用字节数了 修改工程选用的MCU Settings- MCU Select
[单片机]
OSAL移植到STM8
最近需要用STM8S105做驱动控制器,涉及到使用485与上位机通讯,上位机的蓝牙模块中使用CC2541。这是个新产品,没有可借鉴的代码,涉及到的协议解算和逻辑结构又比较多,规划了一下架构并尝试写了几行代码,发现在编程幼稚园中学的状态机式编程实在难以胜任,于是打算上一个操作系统。 考虑到ucos代码量比较大,不适用于这种小片子,一时难以抉择。忽然想到已经在BLE上耕耘了大半年了,使用OSAL非常得心应手,于是想把CC2541中的OSAL移植过来。 严格意义上来讲,OSAL不是真正的嵌入式实时操作系统,它的本质是状态机式的伪操作系统,它和Contiki有点像,和uCOS的架构则完全不同(因为uCOS底层是真正要做任务切换的,
[单片机]
STM8单片机STVD环境查看指令运行时间
在调试的情况下,View- Core Registers可查看
[单片机]
基于STM8的DHT11温湿度传感器的驱动代码设计
最近希望恢复性学习一下STM8的相关知识,于是我选择了从头开始写温湿度传感器DHT11驱动代码的方式。其中遇到一些问题,也有一些收获,希望会帮助到遇到类似问题的朋友,也希望不足之处得到大家的指导 首先介绍一下DHT11的必要知识 一 复位时序 以及 数据时序 下面是数据时序 此外,根据数据手册得知,一次通信需要的时间是3毫秒左右,这很重要,在后面的BUG分析环节会说到 二 贴上关键代码以及分析 //复位DHT11 void DHT11_RST() { TIM4_CR1 = 0x00; //关闭定时器 TIM4_CNTR = 0;
[单片机]