-
1. 总中断开在哪了?
2. 中断服务程序为什么不清楚溢出标志位?
3.为什么配置TIM6要先使能计数器?为什么不启用软件更新?
正规的操作是配置完毕后进行软件更新确保各寄存器在开启定时器后立即生效。请认真再看一遍有关PSCR等寄存器的说明。
4.建议不要再计数器允许的时候改写CNTR的值。
5.我也不明白为什么要给CNTR赋初值?而且还跟ARR一样?难道你不知道TIM6计数器是单向上计数?。
我的TIM6配置格式如下。
TIM6_ARR=0X64;
TIM6_PSCR=0X00;
TIM6_CR1=0X84;//使能预装载,仅计数器溢出发送中断请求。
TIM6_EGR=0X01;//软件更新TIM6所有寄存器
TIM6_SR1=0X00;//清除溢出标志位。
TIM6_IER=0X01;//开启溢出中断
TIM6_CR1|=0X01;//开启计数器
别忘了开总中断,还有在中断服务程序里清除溢出标志位,否则,到时你试下就知道会出现什么现象了。
-
谢谢指点,的确不懂...
-
要不我给ST研发个加固版的stlink好了。
应用我的IO保护专利,不增加很多成本。
EP868销售到目前为止,未发现IO损坏的,说明我的保护电路切实有效,呵呵。 ...
mcuisp 发表于 2010-8-22 15:55
-
把堆栈设置大点,治标不治本
你的程序编的有问题,例如是否有低功耗管理,有的话,进入低功耗的时候,是否有释放堆栈,一般的话,堆栈是够用的。只是你的堆栈没有释放而已。
-
根据下面图的显示,应该是链接有问题,导致向地址0x00000000进行Flash编程失败
-
引用 14 楼 wdy0725 的回复:
我没有处理这个中断:IRP_MN_QUERY_DEVICE_RELATIONS, 不知道有没有什么影响?
这个IRP不处理应该是没关系的。
-
不好意思,找到了...........
@note
- Low-density Value line devices are STM32F100xx microcontrollers where the
Flash memory density ranges between 16 and 32 Kbytes.
- Low-density devices are STM32 ...
呵呵,其实,在datasheet 的第1页有,在第3行就座
-
额。。。。上面对15楼的说法有点小问题,应该是这样的。重复下 ,呵呵。
15楼的说法有问题吧。。这里只是单片机发送数据,由pc接收,不需要用中断服务程序,有了反而画蛇添足,换句话说你的第一个数据发送完了,会进去中断服务程序,你那个里面有
if(TI==1)
{
TI=0;
}
这样一来,你主程序里的
while (TI==1) {;}TI=0;
跟那个不是重复了么。或者说回到主程序的时候TI已经是等于0的了,while没有循环就执行TI=0,然而TI在中断中已经清零了。这里重复了。。。。。
还有:应该是pc接收端接收程序采用中断,当单片机没有发送数据的时候不予理会,当有数据发送到pc时,引起pc中断,并接收单片机发送来的数据。
-
补充下,是用DEVICEEMULATOR做个仿真器。
-
关注一下,mark~~~
-
恩,多谢楼上各位
我根据各位的方法查查看
-
额 我就是要调接受,唉!!!
还在努力中。
楼上的大哥调出来后说说过程啊!
万分感谢!
引用:
可以,我刚调试出发送,接收还没有调试好
-
学习了 强顶一下
-
才开始学单片机,很难感觉
不股感觉很有意思............
-
请教正确的安装顺序,好像说装完r2直接装r3,不用装r2的更新包。
且r3之后是否要装更新包呢?
-
软件不增加成本
-
两轮板子的硬件电路是完全一样的吗?
-
还没有解决呀
帮顶了
期待有经验的人来解决
-
我总感觉出现未定义指令异常,就是应该是压栈的pc被数据覆盖,然后去取指令执行的时候出现了问题。。。。正常情况下,如果有未定义指令异常在编译的时候就会报错了!!!
我分配的都很足够的。我给svc 16k多,给irq 1k,其他异常都是256B,fiq不用,但是也给了256B,但是为什么还出现这个错误呢???
我跟踪过,发现最多也就用了4、5k。。。而且有时候死的时候没有超过超过我给他分配的空间。
这个到底是什么回事呢???我在异常里面用串口打印数据,有时候得到的是乱码,有时候输出时正常的。。。都不能响应中断,因为我在异常里面加了while(1);
-
有没有bsp_cfg.h这个文件:
里面定义:
#if (CPU_NAME == S3C6410)
#define CLK_667MHz 667000000
#define CLK_800MHz 800000000 // Just for the Test, Remove when release
#define CLK_1066MHz 1066000000 // Just for the Test, Remove when release
#endif
...
#elif (S3C6410_APLL_CLK == CLK_667MHz) // ARM:HCLK:PCLK = 667:133:33.25 (Async Mode)
#if (CPU_NAME == S3C6410)
#define APLL_CLK (S3C6410_APLL_CLK)
#define MPLL_CLK (CLK_266MHz)
#define APLL_DIV 1
#define MPLL_DIV 2
#define HCLKx2_DIV 1 // Async
#define HCLK_DIV 2
#define PCLK_DIV 8
#define S3C6410_ACLK (APLL_CLK/APLL_DIV) // 667 MHz
#define S3C6410_DoutMPLL (MPLL_CLK/MPLL_DIV) // 133 MHz
#define S3C6410_HCLKx2 (MPLL_CLK/HCLKx2_DIV) // 266 MHz
#define S3C6410_HCLK (S3C6410_HCLKx2/HCLK_DIV) // 133 MHz
#define S3C6410_PCLK (S3C6410_HCLKx2/PCLK_DIV) // 33.25 MHz