新手上路
- 积分
- 40
- 金钱
- 40
- 注册时间
- 2011-10-31
- 在线时间
- 4 小时
|
1金钱
本帖最后由 coolhe 于 2016-6-8 11:11 编辑
第一次发贴,求助--- STM8L052C6 Timer寄存器操作无反应?
硬件: STM8L052C6 + ST Link/V2 时钟: HSI/8, 2MHZ(默认值)
IDE: STVD(V4.3.9), C语言
芯片来源: 深圳华强北商铺
问题由来: 一个小项目开发过程中发现对STM8L052C6的Timer4操作无反应, 单步跟踪发现Timer4的寄存器值全为复位值, 也就是说程序的设置没发挥作用. 于是就想了以下最简单的测试方法:
***********************************************************************
#include "STM8L052C6.h" /* Registers and memory mapping file. */
main()
{
// PE_DDR |= (1<<3); PE_CR1 |= (1<<3);
// PE_ODR |= (1<<3);
TIM4_PSCR |= 6;
TIM4_CR1 = 5;
TIM4_CNTR=0x52;
// TIM1_PSCRH=6;
while (1);
}
***********************************************************************
以上程序,单步执行, TIMER4的寄存器值全为复位值,可参考附后图片结果.
但如果不屏蔽第1/2/6句时,也就是说对GPIOE和TIMER1操作时, GPIOE的寄存器可以正常操作(在原板子上LED也是正常工作的,说明GPIO口是可以操作的),这说明IDE和STLINK应当是没问题吧?!
而TIMER1和TIMER4一样,寄存器一直为复位值.
一开始怀疑是芯片的问题(担心是假的), 于是换了几片, 结果一样; 又从网上买了另外两家的(不过还是深圳华强北的),结果也一样, 这些芯片都标的是CHN, 只是"批号"不同.
请问: 哪位用过STM8L或遇到过类似经验的麻烦请指点一下, 谢谢!
@正点原子 也期待你专业的回复, 谢谢
|
-
最佳答案
查看完整内容[请看2#楼]
确实测试方法存在问题:
需要使用TIMER4,那么首先要打开TIMER的外设时钟,也就是说,需要增加以下语句才行.
***********************************************************************
#include "STM8L052C6.h" /* Registers and memory mapping file. */
main()
{
CLK_PCKENR1 |= 0x04; // Enable TIM4 CLK
TIM4_PSCR |= 6;
TIM4_CR1 = 5;
TIM4_CNTR=0x52;
while ( ...
|