推荐阅读最新更新时间:2024-11-12 22:46
STM8S——8位基本定时器(TIM4)
简介:该定时器由一个带可编程预分频器的8位自动重载的向上计数器所组成,它可以用来作为时基发生器,具有溢出中断功能。 主要功能: (1)8位向上计数的自动重载计数器; (2)3位可编程的预分配器(可在运行中修改),提供1、2、4、8、16、32、64、128这8种分频比例; (3)中断产生:更新中断(溢出,计数器初始化)。 代码实现: 1 /* Includes ------------------------------------------------------------------*/ 2 #include stm8s.h 3 4 /* Private define -------------
[单片机]
STM8S之时钟切换自学笔记
STM8S相关寄存器 主时钟状态寄存器(CLK_CMSR) 0XE1 当前HSI为主时钟源(复位值); 0XD2 当前LSI为主时钟源(LSI_EN为1时); 0XB4当前HSE为主时钟源; 主时钟切换寄存器(CLK_SWR) 0XE1 当前HSI为主时钟源(复位值); 0XD2 当前LSI为主时钟源(LSI_EN为1时); 0XB4当前HSE为主时钟源; 切换控制寄存器(CLK_SWCR) 低四位有效,高四位保留,SWIF,SWIEN,SWEN,SWBSY SWIF:时钟切换中断标志,硬件置位,软件写0清除; SWEN:手动切换(0)、自动切换(1); SWIEN:时钟切换中断使能,由软件置位或清零 SWBSY:切换忙,0无时钟
[单片机]
STVD弹出"Line number 50 is out of range for "main.c"."的原因及解决办法
正在用STVD+Cosmic 32K的免费编译器调试代码,结果弹出这么一个窗口,如下图: STVD Visual Develop : Line number 50 is out of range for main.c . 其实就是无法设置断点。 检查了一下,发现是第 48行代码有问题,B_UART3_Rx_OK 是个位变量,我直接让它与 5 做比较是不对的,于是凡是在这个错误下方设置断点,均会弹出这个窗口,把这条语句改为:if(B_UART3_Rx_OK == 1) 就木有问题了。
[单片机]
stm8s定时中断
stm8s定时器有高级定时器TIM1,通用定时器TIM2,TIM3,TIM5,以及基本定时器TIM4,TIM6。定时中断配置基本一样。需要注意的也就是分频不同,定时器位数不同。16位定时器配置后面再说,这里以基本定时器TIM4为例,产生2ms中断,配置如下: TIM4_IER_UIE = 1;//使能TIM4溢出中断 TIM4_PSCR = 0x06; //配置TIM4 64分频,8us记一次数 TIM4_ARR = 0xF9; //自动重装载的值- 249,2ms中断 TIM4_CNTR = 0xF9; TIM4_CR1_CEN = 1; //使能TIM4计数 说明:主时钟为8M,根据手册,带入数值80000
[单片机]
STM8S 定时器第一次使用时间不准确的问题
以前用定时器只是提供系统的5ms时基,并没有发现问题,最近做红外遥控器的解码,发现启动定时器TIM2后,第一次总是时间没到就触发中断了,之后也都正常了,也就是说问题出在刚配置好第一次使用的时候 由手册得知,定时器的预分频器PSCR并不是立即生效的,只有触发一次中断事件后,才会写入设定的分频值,系统也提供了EGR寄存器的UG位来主动软件触发中断事件,可以用来解决这个问题
[单片机]
STM8S 115200bps 串口中断连续接收出错问题
内部16M晶振误差太大,导致波特率不准,9600bps可以。要想使用115200,就用外部晶振吧。 还有数据寄存器DR中的数据如果没有及时取走(也可能因为波特率不准)导致数据溢出,出现反复中断现像,如在调试时如果暂停时串口上还有数据,再次运行时DR中的数据将一直是某个数据,正常情况下是不会出现的,解决办法就是进中断的时候清OV标志(不能解决根本问题)。
[单片机]
错误:error: #70: incomplete type is not allowed
前言 博文基于STM32标准库和MDK环境下编写; 我只列举两种出现这个错误的类型,其他类型碰见再说; 翻译:错误的不完整类型; 类型一:在b.c文件中需要引入一个a.c中的结构体变量,,我在b.c中直接extern 这个结构体,,结果编译时报错error: #70: incomplete type is not allowed最后上网查找才知道结构体不能这样引入。 解决办法: 1.在a.h中声明这个结构体,,(结构体实体要在.h文件中) 2.在a.c中定义这个结构体类型的变量。(也可以在a.h中定义结构体变量) 3.在b.c中ertern引入这个结构体变量 类型二:当ertern一个数组时如果不定义数组大小是也会出现
[单片机]
【MPLAB X IDE】02:fatal error: xxx.h: No such file or directory
在MPLAB X IDE软件中新建工程。按照惯例,通常会把头文件放在名为 h 的文件夹下,源文件放在 src 文件夹下,如下图所示。这里编译时会报标题所示错误。 环境 MPLAB X IDE版本:v5.10 编译器:xc16-gcc v1.20 解决方法 1、打开菜单 文件项目属性,弹出项目属性对话框。点击 XC16,编辑 Common include dirs。 2、添加 ..和.目录。 这两种路径分别表示:上一级目录的h文件夹和本级目录。 3、点击 OK 按钮后。
[单片机]