推荐阅读最新更新时间:2024-11-13 13:44
基于STM8的TIM定时器操作---STM8-第三章
1. 综述 STM8S提供三种类型的 TIM 定时器:高级控制型(TIM1)、通用型(TIM2/TIM3/TIM5)和基本型定时器(TIM4/TIM6)。它们虽有不同功能但都基于共同的架构。此共同的架构使得采用各个定时器设计应用变得非常容易与方便(相同的寄存器映射,相同的基本功能)。 本文只针对STM8S103该芯片进行介绍,该芯片的定时器个数为3个,每个类型的定时器都一个,分别为高级控制型(TIM1)、通用型(TIM2)、基本型定时器(TIM4)。 2. 关于STM8S103手册的TIM简介 每个定时器的功能都有详细介绍,大家可以认真看下。 3. TIMx详细讲解 3.1 TIM1解析
[单片机]
STM8 IO口模拟串口通信
使用普通的IO口,模拟串口协议, 和PC端串口调试软件实现通信。 网上找了很多资料,有很多网友有些程序,但是感觉都不是很完整,无意间看到ST官方居然有实现,直接下载代码开始用。 针对官方的IO口模拟串口软件,简单介绍下用到资源。 由于模拟的串口RX脚,对于电平的输入判断用到定时器的输入捕获功能,所以官方用的是定时器3的通道2。 我自己在STM8S003F3P6最小系统上,移植到了TIM2的CH1即PD4用来做串口的RX脚,和PC端串口调试器的TX脚连接。 模拟串口的TX脚没有特殊要求,我这里用的PD3。。。。 修改了MAIN里面的函数,实现模拟串口直接发送接收到的数据。 PPS,关于串口波特率的配置,
[单片机]
STM8单片机 ADC模拟看门狗中文资料错误
在调试stm8单片机的adc模拟看门狗功能时,不管怎么设置ADC_HTR和ADC_LTR寄存器的值,然后通过IAR软件单步调试时观察这两个寄存器的值都不对。 根据中文手册上看,高位寄存器存储的是10位数据的高两位,低位寄存器存储的是数据的低8位。但是按照这种方式,将数据写入寄存器后,然后通过变量观察窗口观察这四个寄存器的值,发现寄存器里面的值和写入的值不一样。 于是找到了一个官方库函数对这两个寄存器设置方法 通过库函数中对这两个寄存器的设置可以看出,寄存器高位存储的是10位数据的高8位,寄存器低位存储的是寄存器的低2位。和中文手册中对寄存器的介绍不一样。按照这种方式对寄存器写入数据,然后在变量窗
[单片机]
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固件库+IAR 之--CLK
STM8的时钟控制十分强大,用户可独立地管理各个时钟源,并将它们分配到CPU或各个外设。主时钟和CPU时钟均带有预分频器。具有安全可靠的无故障时钟切换机制,可在程序运行中将主时钟从一个时钟源切换到另一个时钟源。本程序是更改内部2M或者外部8M晶振,让led2闪灯,通过不同初始化,能观察出led的快慢,上代码: #include stm8s.h /*========内部高速时钟初始化========*/ void init_hsiclk(void) { CLK_DeInit(); //寄存器复位 CLK_HSICmd(ENABLE); //内部高速时钟使能 CLK_HSIPrescalerConfig(CLK_PRES
[单片机]
STM8学习笔记---uart1串口中断
uart1串口发送、接收中断。 目标:串口接收1,点亮led1,接收2点亮led2,接收到其他字符关闭led1和led2。 步骤如下: 1、编写led.h和led.c文件。略 2、编写uart.h和uart.c文件,其中串口配置函数如下: void USART_Configuration(void)//串口初始化函数 { UART1_DeInit(); UART1_Init((u32)115200, UART1_WORDLENGTH_8D, UART1_STOPBITS_1, UART1_PARITY_NO , UART1_SYNCMODE_CLOCK_DISABLE , UART1_MODE
[单片机]
STM8 ADC转换模式-------连续扫描模式
STM8单片机ADC支持5种转换模式:单次模式,连续模式,带缓存的连续模式,单次扫描模式,连续扫描模式。 连续扫描模式 该模式和单次扫描模式相近,只是每一次在最后通道转换完成时,一次新的从通道0到通道n扫描转换会自动开始。如果某个数据缓存寄存器在被读走之前被覆盖,OVR标志将置1。 连续扫描模式是在当SCAN位和CONT位已被置时,通过置位ADON位来启动的。 在转换序列正在进行过程中不要清零SCAN位。 连续扫描模式可以通过清零ADON位来立即停止。另外一种选择就是当转换过程中清除CONT位那么转换会在下一次的最后一个通道转换完成时停止。 注意:在扫描模式中,不要使用
[单片机]