推荐阅读最新更新时间:2024-03-16 14:43
在STM8单片机中自己实现 printf()函数功能
由于STM8单片机本身内存比较小,而系统自带的printf()函数又比较占据空间,所以在稍微大一点的工程中有时候一使用 printf() 函数就会导致单片机内存不足,于是想着能不能自己写一个比较小的函数来实现类似printf()函数的功能。经过网上查找资料和总结终于找到了一个占用内存比较小,又能实现串口打印功能的方法。 现在将自己的方法分享出来,这里使用 STM8S003F3P6单片机测试。 首先新建一个工程,专门用来测试串口功能。 串口部分相关代码如下: //串口 void Uart1_IO_Init( void ) { PD_DDR |= ( 1 5 ); //输出模式
[单片机]
使用STM8驱动温湿度传感器DHT11的代码实现
最近希望恢复性学习一下 STM8 的相关知识,于是我选择了从头开始写温湿度传感器 DHT11 驱动代码的方式。其中遇到一些问题,也有一些收获,希望会帮助到遇到类似问题的朋友,也希望不足之处得到大家的指导。 首先介绍一下 DHT11 的必要知识 一 复位时序 以及 数据时序 下面是数据时序 此外,根据数据手册得知,一次通信需要的时间是 3 毫秒左右,这很重要,在后面的 BUG 分析环节会说到 二 贴上关键代码以及分析 // 复位 DHT11 voidDHT11_RST() { TIM4_CR1=0x00;// 关闭定时器 TIM4_CNTR=0;// 保证下次的第一个数据位的准确 DATA_
[单片机]
STM8 触发同步
STM8触发同步 计数器允许四种触发输入 ETR TI1 TI2 来自TIM5/TIM6的TRGO TIM1的计数器使用三种模式与外部的触发信号同步:标准触发模式,复位触发模式和门控触发模式。 标准触发模式 计数器的使能依赖于选中的输入端上的事件。 在下面的例子中,计数器在TI2输入的上升沿开始向上计数: 配置通道2检测TI2的上升沿。配置输入滤波器带宽(本例中,不需要任何滤波器,保持IC2F=0000)。触发操作中不使用捕获预分频器,不需要配置。TI2S位仅用于选择输入捕获源,也不需要配置。配置TIM1_CCER1寄存器的CC2P=0,选择上升沿做为触发条件。 配置TIM1_SMCR寄存器的SMS=110,
[单片机]
stm8单片机的SWIM模式引脚复用
SWIM模式 上电复位后,SWIM复位并进入OFF模式。 1、OFF:上电复位的默认状态。此时,SWIM引脚不能应用为I/O口。 2、I/O:通过将全局配置寄存器(CFG_GCR)中的SWD位置位后可将SWIM引脚设定为普通I/O口。一旦系统复位,SWIM模块重新回到OFF模式。 3、SWIM:当SWIM引脚出现特定序列信号时,就会进入此状态。这种模式下,调试工具通过SWIM引脚使用三种命令(SRST系统复位,ROTF运行中读,WOTF运行中写)来控制STM8。 SWIM引脚复用 通过将全局配置寄存器(CFG_GCR)中的SWD位置位后可将SWIM引脚设定为普通I/O口但需要注意: 如果SWIM引脚用作普通I/O口,最好
[单片机]
ADI公司的模数转换器兼备一流的无杂散动态范围和低功耗性能
——AD9524 ADC 采用小封装兼备高性能和低功耗特性, 从而使其非常适合于无线基础设施应用和手持式仪器设备 关于 AD9254 模数转换器 美国模拟器件公司( Analog Device , Inc., 简称 ADI )推出 ADC9254 150 MSPS (每秒百万次采样)转换速率 14 bit 分辨率的模数转换器( ADC )扩展了其无线基础设施应用的器件种类。这款 ADC 工作在 70 MHz 时具有 83 dB 的无杂散动态范围( SFDR ),同时功耗仅为 430 mW—— 功耗比同类解决方降低了 50 %。这种高 SFDR 、低功耗和小封装尺寸( 7 mm×7
[新品]
STM8的启动过程(基于IAR)
初学STM8S已经一段时间了,但是一直不太明白它的启动过程。众所周知,所有的嵌入式CPU启动时,都应该有一个Bootloader程序,一般存放在复位地址处。这个程序一半来自于固件库附带的启动文件,如51的STARTUP.A51,或者STM32的STM32F103x.s等,但IAR中并未提供STM8S的启动文件。那么它是如何找到main函数并完成启动的呢? 按照常理,启动过程应该在复位中断中完成。在STM8S的数据手册中,可以找到CPU中断向量表: 可以发现,复位中断向量地址是8000h。 然而查看数据手册可以发现,复位后地址是应该是6000h。 调试时,无法看到6000h处的代码。没办法,只好再找数据手册。
[单片机]
了解模数转换器错误影响系统性能-Understanding
script language=javascript src="/data/js/10.js" /script script type=text/javascript /script script src="http://pagead2.googlesyndication.com/pagead/show_ads.js" type=text/javascript /script script src="http://pagead2.googlesyndication.com/pagead/js/r20101117/r20110202/show_ads_impl.js" /script script google_pro
[模拟电子]
STM8避坑—串口中断
STM8库函数开发方式中,串口中断的类型有很多,头文件中的定义入下: typedef enum { UART1_IT_TXE = (uint16_t)0x0277, /*! Transmit interrupt */ UART1_IT_TC = (uint16_t)0x0266, /*! Transmission Complete interrupt */ UART1_IT_RXNE = (uint16_t)0x0255, /*! Receive interrupt */ UART1_IT_IDLE = (uint16_t)0x0244, /*! IDL
[单片机]