stm8l lcd驱动的LCD控制器怎么使用啊?是不是非要LSE时钟才行

 上传我的文档
 下载
 收藏
该文档贡献者很忙,什么也没留下。
 下载此文档
正在努力加载中...
【精品】STM8L问答
下载积分:620
内容提示:【精品】STM8L问答
文档格式:DOC|
浏览次数:22|
上传日期: 22:31:17|
文档星级:
该用户还上传了这些文档
【精品】STM8L问答
官方公共微信STM8L探索套件学习笔记-CLK时钟控制(四)&&08:54:35
STM8L探索套件学习笔记-CLK时钟控制(四)
STM8L继承了STM32的时钟架构,分为四类时钟:HSI(高速内部RC 16M),HSE(高速外部1-16M),LSI(低速内部38K),LSE(低速外部32768),没有PLL倍频器,也是采用控制外设的时钟开关降低功耗。复位默认采用HSI高速内部时钟,8分频也就是2MHZ。时钟还能通过CCO寄存器配置,设置为输出。输出的I/O必须配置为输入推挽上拉/下拉模式。
现在我们就使用时钟输出的功能CCO,输出HSI的时钟看看
main(void)
&&GPIO_Init(GPIOC,GPIO_Pin_4,GPIO_Mode_Out_PP_High_Fast);
&&//CLK_CCOConfig(CLK_CCOSource_HSI,CLK_CCODiv_16);
&&//输出HSI
16分频时钟&1M
&&CLK_CCOConfig(CLK_CCOSource_HSI,CLK_CCODiv_1);
&&//输出HSI
1分频时钟&&16M
以上网友发言只代表其个人观点,不代表新浪网的观点或立场。发表于: 08:10:44 |
分类:STM8L
产品唯一的身份标识(Unique Device ID)非常适合:& ●& 用来作为序列号serial numbers (例如 USB字符序列号或者其他的终端应用)& ●& 用来激活带安全机制的自举过程 ●& 用来作为密码在编写闪存时,将此唯一标识与软件加解密算法结合使用,提高代码在闪存存储器内的安全性。96位的产品唯一身份标识所提供的参考号码对任意一个STM8L 微控制器,在任何情况下都是唯一的。用户在何种情况下,都不能修改这个身份标识。& 这个96位的产品唯一身份标识,按照用户不同的用法,可以以字节(8 位)为单位读取。96 位的独特ID位于地址 0x4926 ~ 0x4931的系统存储区.读出的结果为0X 00-2B -00-35-14-47& &39-34-37-34-30-39&5.9-产品唯一身份标识(Unique+Device+ID).zip&&&
发表于: 08:26:04 |
分类:STM8L
今天使用到的外设比较多,有DMA,TIM1,ADC。使用ADC1的通道24即PF1采集电位器的电压,由DMA1的通道0传输到Buffer。同时由DMA1的通道2将Buffer传输到TIM1外设上,也就是TIM1_CCR1H寄存器,能够改变PWM波的占空比。我们将PWM输出端连接到板上LED3上,这样就实现了用电位器调节LED3的亮度的作用。我们转了这么大弯,但能够学到很多,下面是代码:void main(void){& //1使能时钟& /* Enable ADC1 clock */& CLK_PeripheralClockConfig(CLK_Peripheral_ADC1, ENABLE);&& /* Enable TIM1 clock */& CLK_PeripheralClockConfig(CLK_Peripheral_TIM1, ENABLE);&& /* Enable DMA1 clock */& CLK_PeripheralClockConfig(CLK_Peripheral_DMA1, ENABLE);
发表于: 08:26:00 |
分类:STM8L
窗口看门狗(WWDG)通常被用来监测由外部干扰或不可预见的逻辑条件造成的应用程序背离正常的运行序列而产生的软件故障。除非递减计数器的值在 T6 位变成 0 前被刷新,看门狗电路在达到预置的时间周期时,会产生一个 MCU 复位。在递减计数器达到窗口寄存器数值之前,如果 7 位的递减计数器数值(在控制寄存器中)被刷新,& 那么也将产生一个 MCU 复位。这表明递减计数器需要在一个有限的时间窗口中被刷新。 上面提到的 T6 即是窗口看门狗的自减计数器的第六位(最高位)。在该计数器的 T6 位变为 0 后(小于 0X40),就会引起一复位。这是窗口的下限。而当计数器的值在大雨窗口配置寄存器的窗口值之前就被修改的话,也会引起一次复位,这里窗口值是上限。窗口值是由用户自己设定的,根据实际要求来设计窗口值,但是一定要确保窗口值大于 0X40,否则窗口就不存在了,如下图所示:&void main(void){& uint8_t I& GPIO_Init(LED3_PORT,LED3_PIN,GPIO_Mode_Out_PP_Low_Fast);& //输出低电平-高
发表于: 09:07:30 |
分类:STM8L
STM8L 的独立看门狗由内部专门的 38Khz 低速时钟驱动,即使主时钟发生故障,它也仍然有效。这里需要注意独立看门狗的时钟并不是准确的 38Khz,只是我们在估算的时候,以 38Khz 的频率来计算,看门狗对时间的要求不是很精确,所以,时钟有些偏差,都是可以接受的。根据分频系统和看门狗计数值可以设置独立看门狗的复位时间,范围从0.1ms~1724.63ms,如下图所示:例程展示如何重载IWDG计数值,IWDG的时间设置为214.7ms。程序采用&Refresh&变量来使能IWDG重载计数值仿真IWDG复位,并且板上LED4翻转。当按键按下,模拟一次软件错误造成程序没有喂狗,从而发生复位。如果IWDG复位,系统启动后LED3会翻转8次,主代码如下:void main(void){& uint8_t I& GPIO_Init(LED3_PORT,LED3_PIN,GPIO_Mode_Out_PP_Low_Fast);& //输出低电平-高速10M& GPIO_Init(LED4_PORT,LED4_PIN,GPIO_Mode_Out_P
发表于: 08:30:10 |
分类:STM8L
使用ADC的DMA功能,每次连续转换8个数据,然后平均显示到LCD上。主要代码如下:void main(void){&& /* Enable ADC1 clock */& CLK_PeripheralClockConfig(CLK_Peripheral_ADC1, ENABLE);&& /* Enable DMA1 clock */& CLK_PeripheralClockConfig(CLK_Peripheral_DMA1, ENABLE);& LCD_GLASS_Init();& /* Initialize and configure ADC1 */& ADC_Init(ADC1, ADC_ConversionMode_Continuous, ADC_Resolution_12Bit, ADC_Prescaler_2);& ADC_SamplingTimeConfig(ADC1, ADC_Group_SlowChannels, ADC_SamplingTime_384Cycles);&&
发表于: 08:32:05 |
分类:STM8L
STM8L有一个DAC通道,能够将数字信号转为模拟信号。官方范例中使用DAC和DMA、TIM4作为一个信号发生器,首先先逐个介绍下每个功能:DMA用于提供外设与内存或者内存与内存的高速数据传递,数据能够直接由DMA移动,而无需CPU操作,这样能够使得CPU的资源可以用于其他操作。DMA控制器有4个通道,每个通道用于管理一个或者多个外设的内存访问请求。内部有仲裁管理DMA访问的优先权。由于是8位,DMA最大数据量为255。DAC模块是12比特数模转换器电压输出,DAC能够配置为8比特或者12比特模式,能够使用DMA控制器。在12比特模式下,数据可以选择左/右对齐,在中等模式器件下有1个输出通道,在中等+和高密度器件有2个输出通道。输入内部参考电压VREF可以获得更好的角度。DAC可以配置为软件触发和TIM4外部触发模式,我们使用TIM4外部触发模式可以方便地调整输出频率。官方例程使用寄存器操作,比较难懂。这里我们使用固件库先创建一个简单地信号发生器,能够选择生成信号的类型,并使用板上的LCD显示信号的名称。代码如下:void main(void){& //CLK_SYSCLKDivConfig(CLK
发表于: 10:42:45 |
分类:STM8L
密码学中的高级加密标准(Advanced Encryption Standard,AES),又称Rijndael加密法,是美国联邦政府采用的一种区块加密标准。对称密码体制的发展趋势将以分组密码为重点。分组密码算法通常由密钥扩展算法和加密(解密)算法两部分组成。密钥扩展算法将b字节用户主密钥扩展成r个子密钥。加密算法由一个密码学上的弱函数f与r个子密钥迭代r次组成。混乱和密钥扩散是分组密码算法设计的基本原则。抵御已知明文的差分和线性攻击,可变长密钥和分组是该体制的设计要点。   AES是美国国家标准技术研究所NIST旨在取代DES的21世纪的加密标准。   AES的基本要求是,采用对称分组密码体制,密钥长度的最少支持为128、192、256,分组长度128位,算法应易于各种硬件和软件实现。1998年NIST开始AES第一轮分析、测试和征集,共产生了15个候选算法。1999年3月完成了第二轮AES2的分析、测试。日美国政府正式宣布选中比利时密码学家Joan Daemen 和 Vincent Rijmen 提出的一种密码算法RIJNDAEL 作为 AES.   在应用方面,尽管DES在安全上是脆弱
发表于: 08:38:28 |
分类:STM8L
官方给的例程当中,使用PE6作为IDD_WAKUP,将系统从低功耗中唤醒,STM8L有5种低功耗模式,如下图所示:降低功耗的方法还可以将系统时钟降低或者关闭没有使用的外设。&今天我们就使用U3这个14阶脉动进位计数器M74HC4060进行HALT模式唤醒,从原理图可以看到Q14脚输出的反向连接到T2模拟开关,控制PE6端口。因为经过两个反向器,使用Q14的逻辑等于PE6的逻辑。U3的时钟频率为30KHZ,Q14的脉冲周期为2的14次方除以30KHZ,约等于0.5s,也就是说Q14输出的脉冲是周期大约为1秒,占空比为1:1的方波。所以PE6的电平变化也是周期大约为1秒,占空比为1:1的方波。代码设计如下:void main(void){& GPIO_Init(LED3_PORT,LED3_PIN,GPIO_Mode_Out_PP_High_Fast);& //输出低电平-高速10M& GPIO_Init(LED4_PORT,LED4_PIN,GPIO_Mode_Out_PP_High_Fast);& //输出低电平-高速10M& GPIO_Init(C
发表于: 09:57:01 |
分类:STM8L
上节将到官方例程使用EEPROM存储外围电路消耗的电流值,今天我们对STM8L的EEPROM介绍下。STM8L带有的32K的FLASH和1K的EEPROM都可以编程和擦除,编程模式有1、字节byte,2、字word,3、BLOCK和4、编程和擦写完中断。由于默认是锁定的,所以对FLASH和EEPROM编程首先要解锁,解锁的方式是写如寄存器特定值,0X56 0XAE。在IAR编译器当中,__eeprom 用于EEPROM 存储空间, 控制数据存放,控制指针类型和存放。@ 用于变量的绝对地址定位。也可以用#pragma location 命令。EEPROM 区域数据存储:&& 用关键字 __eeprom 控制来存放, __eeprom关键字写在数据类型前后效果一样。__ee//定义一个变量存放在EEPROM空间unsigned char __//效果同上__eeprom unsigned char p[];//定义一个数组存放在EEPROM空间对于EEPROM空间的变量操作同SRAM数据空间的操作方法一样,编译器会自动调用 __EEP
发表于: 08:24:41 |
分类:STM8L
上图就是IDD测量电路的原理图。正常工作时,K1是闭合的,测量的电流单位为mA;低功耗下,K1是打开的,测量的电流单位为uA。总共有5个测量单元,通过按键进行切换,如下图所示。基准电流消耗测试部分:测量低功耗消耗的电流需要考虑外围电路(如放大器等)消耗的部分,这样测量的值才准确。测量的步骤是,将JP1放在OFF位置,开启板上电源要同时保持USER按键是按下的,这样程序就进入了基准电流测量部分,并将测量的结果存入EEPROM当中,测量结果如下图。
旗下网站:
与非门科技(北京)有限公司 All Rights Reserved.
京ICP证:070212号
北京市公安局备案编号: 京ICP备:号STM8L LCD显示有问题的模糊的建议 - STM8 - 意法半导体STM32/STM8技术社区
后使用快捷导航没有帐号?
查看: 862|回复: 15
STM8L LCD显示有问题的模糊的建议
主题帖子威望
新手上路, 积分 33, 距离下一级还需 17 积分
新手上路, 积分 33, 距离下一级还需 17 积分
本帖最后由 waiwai-409857 于
18:16 编辑
在论坛上看了其他朋友的经验,把STM8L152的LCD点亮了。回过头来一看,并没有想象中的那么复杂,且看了论坛有些朋友对STM8L甚至抱有怀疑态度的,在这里我总结下问题:
1. 使用低功耗模式的,必须使用外部电源才能点亮LCD。
2. 必须先使能LCD。(常识)
CLK_PeripheralClockConfig(CLK_Peripheral_LCD, ENABLE);
3. 使用低功耗,需打开RTC,原因是公用32768HZ震荡。
CLK_PeripheralClockConfig(CLK_Peripheral_RTC, ENABLE);
4. 认真了解LCD_Duty和LCD_Bias这两个参数,必须和LCD的参数一致。
5. 如果发现字段模糊,或者有阴影,请调整LCD_Prescaler和LCD_Divider这两个参数。例如下图(左边正常,右边有些笔画模糊):
(394.44 KB, 下载次数: 0)
18:15 上传
主题帖子威望
金牌会员, 积分 1036, 距离下一级还需 1964 积分
金牌会员, 积分 1036, 距离下一级还需 1964 积分
主题帖子威望
金牌会员, 积分 1403, 距离下一级还需 1597 积分
金牌会员, 积分 1403, 距离下一级还需 1597 积分
& && &背光问题?
主题帖子威望
金牌会员, 积分 2094, 距离下一级还需 906 积分
金牌会员, 积分 2094, 距离下一级还需 906 积分
好经验,谢谢分享!
主题帖子威望
初级会员, 积分 130, 距离下一级还需 70 积分
初级会员, 积分 130, 距离下一级还需 70 积分
学习了,谢谢
主题帖子威望
金牌会员, 积分 1235, 距离下一级还需 1765 积分
金牌会员, 积分 1235, 距离下一级还需 1765 积分
1、看频率;
主题帖子威望
金牌会员, 积分 1235, 距离下一级还需 1765 积分
金牌会员, 积分 1235, 距离下一级还需 1765 积分
数码液晶屏什么型号呢?
主题帖子威望
新手上路, 积分 33, 距离下一级还需 17 积分
新手上路, 积分 33, 距离下一级还需 17 积分
数码液晶屏什么型号呢?
最普通的屏,TN、反射光型。定制的。
主题帖子威望
新手上路, 积分 33, 距离下一级还需 17 积分
新手上路, 积分 33, 距离下一级还需 17 积分
背光问题?
无背光,TN、反射光型。
主题帖子威望
金牌会员, 积分 1542, 距离下一级还需 1458 积分
金牌会员, 积分 1542, 距离下一级还需 1458 积分
感觉有点像背光电压没达到一样。
站长推荐 /1
即日起,ST面向全球征集STM32解决方案,其中优秀项目将有机会作为参考案例在ST官网展示,同时还将携手ST共赴线下展会,与全球技术大牛一较高下。
Tel: 3-8056
备案号: 苏ICP备号-2
Powered by关于STM8L时钟切换问题 - STM8 - 意法半导体STM32/STM8技术社区
后使用快捷导航没有帐号?
查看: 4798|回复: 11
关于STM8L时钟切换问题
主题帖子威望
新手上路, 积分 20, 距离下一级还需 30 积分
新手上路, 积分 20, 距离下一级还需 30 积分
我用的单片机型号:STM8L052R8,时钟切换不正常,在debug时候发现,一执行CLK_SWCR_SWEN = 1命令,debug出错: Failed to read memory at 0x50C7: SWIM error [30004]: Comm timeout
Failed to read memory at 0x50C8: SWIM error [30004]: Comm timeout
Failed to read memory at 0x50C9: SWIM error [30004]: Comm timeout
Failed to read memory at 0x50Ca: SWIM error [30004]: Comm timeout
这几个地址对应CLK的几个寄存器。切换顺序严格按Datasheet要求的,还找不到原因。
哪位遇到类似问题,还请赐教。
主题帖子威望
新手上路, 积分 20, 距离下一级还需 30 积分
新手上路, 积分 20, 距离下一级还需 30 积分
RE:关于STM8L时钟切换问题
补充一下,上述错误在切换至LSE和LSI时才出现,示波器看了,LSE没有问题
主题帖子威望
RE:关于STM8L时钟切换问题
发代码看看吧。怀疑是时钟没有设置成功导致仿真失败。
主题帖子威望
新手上路, 积分 20, 距离下一级还需 30 积分
新手上路, 积分 20, 距离下一级还需 30 积分
回复:关于STM8L时钟切换问题
BYTE System_Clk_AutoSwitch(BYTE newsrc)
WORD timeout=0
//BYTE oldsrc = CLK_SCSR; //上一时钟源
CLK_SWCR_SWEN =0;
switch(newsrc)
CLK_ICKCR_HSION = 1;while (CLK_ICKCR_HSIRDY == 0);CLK_CKDIVR_CKM = 0;
CLK_SWCR_SWEN = 1;CLK_SWR = 0x01;while (CLK_SWCR_SWBSY & timeout);
CLK_SWCR_SWEN =0; //HSI
CLK_ICKCR_LSION = 1;while (CLK_ICKCR_LSIRDY == 0);CLK_CKDIVR_CKM = 0;
CLK_SWCR_SWEN = 1;CLK_SWR = 0x02;while (CLK_SWCR_SWBSY & timeout);
CLK_SWCR_SWEN =0; //LSI
CLK_ECKCR_HSEON = 1;while (CLK_ECKCR_HSERDY == 0);CLK_CKDIVR_CKM = 0;CLK_SWCR_SWEN =0;
CLK_SWCR_SWEN = 1;CLK_SWR = 0x04;while (CLK_SWCR_SWBSY & timeout);
CLK_SWCR_SWEN =0; //HSE
CLK_ECKCR_LSEON = 1;while (CLK_ECKCR_LSERDY == 0);CLK_CKDIVR_CKM = 0;
CLK_SWCR_SWEN = 1;CLK_SWR = 0x08;while (CLK_SWCR_SWBSY & timeout);
CLK_SWCR_SWEN =0; //LSE
这是我的代码,请帮忙看看问题出在哪里。主程序第一条就是 BYTE System_Clk_AutoSwitch(LSE),就报以上错误。若执行BYTE System_Clk_AutoSwitch(HSI) 是可以的。
主题帖子威望
中级会员, 积分 251, 距离下一级还需 249 积分
中级会员, 积分 251, 距离下一级还需 249 积分
RE:关于STM8L时钟切换问题
那估计还是你时钟配置的问题,STM8没玩过,但应该和stm32差不多,如你所说,若执行BYTE System_Clk_AutoSwitch(HSI) 是可以的。那证明用内部时钟是可以的。LSE/LSI都不行,说明,硬件问题的可能性小点,多数还是软件问题。你看一下,是不是有东西对时钟,或者说延时有严格的要求
主题帖子威望
RE:关于STM8L时钟切换问题
LSE使能后,需要短延时,让LSE稳定起振后,再将主时钟源切换成LSE,根据STM32猜测的,看能否解决楼主的问题
主题帖子威望
金牌会员, 积分 1394, 距离下一级还需 1606 积分
金牌会员, 积分 1394, 距离下一级还需 1606 积分
RE:关于STM8L时钟切换问题
看看LSE硬件有没用问题, 虚焊之类的
主题帖子威望
高级会员, 积分 939, 距离下一级还需 61 积分
高级会员, 积分 939, 距离下一级还需 61 积分
RE:关于STM8L时钟切换问题
可能是接触不良...
主题帖子威望
新手上路, 积分 20, 距离下一级还需 30 积分
新手上路, 积分 20, 距离下一级还需 30 积分
RE:关于STM8L时钟切换问题
关于这个问题的发现和疑问:
在各位的提示下,换了晶振,执行上面转换程序,Debug没有报错。但又出现新问题:
1.如果在转换程序中将分频系数改为 CLK_CKDIVR_CKM = 1,Debug仍会报同样错误。
2.程序正常运行为LSE,要实现某个功能时转换到HSI,执行完成再换到LSE,这样执行程序会跑飞。
各位能否帮助分析一下,谢谢
主题帖子威望
高级会员, 积分 740, 距离下一级还需 260 积分
高级会员, 积分 740, 距离下一级还需 260 积分
RE:关于STM8L时钟切换问题
是转换中的异常么,。设置肯定对吗
站长推荐 /1
即日起,ST面向全球征集STM32解决方案,其中优秀项目将有机会作为参考案例在ST官网展示,同时还将携手ST共赴线下展会,与全球技术大牛一较高下。
Tel: 3-8056
备案号: 苏ICP备号-2
Powered by}

我要回帖

更多关于 stm8l lcd驱动 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信