打印
[Cortex-M0技术交流]

刚PLC_AVR说我光上裸照,我现在没什么料,先写两个!

[复制链接]
2024|13
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
AVR, PLC, ST, TI, ic
本帖最后由 Ryanhsiung 于 2011-11-25 17:10 编辑

本想东西多了,再整理一下,再发出来。

刚PLC_AVR说我光上裸照 没写的实质的东西,关键是最近时间不多,比较忙,我就先写两点:
1、我先上传的SYSTIC代码中有条小虫子,我的SYSSTICK初始化代码也是从另人那COPY来的,这个BUG使用12M晶振不易发现,所以各位网友可以查看一下自己的代码,看一下是不是有同样的错误。
     UNLOCKREG();
    DrvSYS_SelectSysTickSource(0);  //
SYSTICK选用外部晶振

    LOCKREG();

  先前的代码没有解锁,导致最终选用了22.1184的内部RC 2分频(实际为11.0592M)。与12M相近,所以使用12M晶振不易发现这个问题。
我用的晶振是20M的,一跑起来时间慢了将近一倍,才找到这个BUG的。


2、一个问题,还没有找到原因,不过将其贴出,给大家看看,也帮忙分析一下。
以下代码是SYSTICK中断中写的代码。
static uint32_t count = 0;
count++;
SysTic_ClearIF();
// 向SYST_CSR.COUNTFLAG中写1 以清除标志
if(count>100)
{
count =0;
printf("1S了!\n");
}
注:
__inline void SysTic_ClearIF(void)
{
SysTick->CTRL |= (1 << 16);//向SYST_CSR.COUNTFLAG中写1 以清除标志
}
//初始化
void SysTick_Configuration(void)
{
UNLOCKREG(); // 对写保护位操作时 需要一次向0x50000 0100写入 0x59,0x16,0x88,
DrvSYS_SelectSysTickSource(0); // 为SYSTICK选用外部12M晶振
LOCKREG();
SysTick->CTRL = 0X03; //[SYST_CSR]向下计数到0将引起SysTick 异常而挂起(进入中断) 计数器运行
SysTick->VAL = 0x00; //[SYST_CVR]该向SYST_CVR寄存器写入0样确保定时器以SYST_RVR中的值计数,而非任意值
SysTick->LOAD = 200000; //[SYST_RVR]200000/20000000 = 0.01s =10ms
Flag_OneSecondForADC = 0 ; //初始
}
看起来没问题,确实也可以运行(在大叔的助学板可以运行,一块100系列板也可以运行)
但是在我新做的100板子上有一块不能运行!代码是正常,也可调试,COUNT有自++,但是就是没有执行PRINTF(。。)。
这后将SysTic_ClearIF();写在了count++;前面就可以了!




相关帖子

沙发
hotpower| | 2011-11-24 19:23 | 只看该作者
~~~~

使用特权

评论回复
板凳
lmcici1314| | 2011-11-24 19:24 | 只看该作者
:)

使用特权

评论回复
地板
lwslws201| | 2011-11-24 19:25 | 只看该作者
:victory:

使用特权

评论回复
5
plc_avr| | 2011-11-24 19:26 | 只看该作者
顶一下,开太多主题哈。

使用特权

评论回复
6
lwslws201| | 2011-11-24 19:28 | 只看该作者
:lol 我来抢分的!

使用特权

评论回复
7
dong_abc| | 2011-11-24 23:02 | 只看该作者
是该抽点时间学习一下了。

使用特权

评论回复
8
hotpower| | 2011-11-24 23:16 | 只看该作者
贴代码用code < >

使用特权

评论回复
9
Metalor| | 2011-11-25 10:22 | 只看该作者
另,定时时间不是太准,比计算出来的稍慢,不知是晶振原因还是什么,家里没有仪器,无从得知。

Metalor 发表于 2011-11-19 19:13




做裸奔框架时就表示过对系统速度的怀疑,当时一直觉得“慢了点”,但实在太忙,只能知其然不知其所以然。。
为了把时间调得尽量准,我掐着秒表对着1S的流水灯调了好大一会儿才慢慢接近了。。
但肯定这样是不可能准确的,因为裸奔框架的需要,只能是尽量弄得准一点了。
谢Ryanhsiung兄解疑,好样的!

使用特权

评论回复
10
Metalor| | 2011-11-25 10:23 | 只看该作者
有帖有真相:
https://bbs.21ic.com/icview-286387-1-1.html

做裸奔框架时就表示过对系统速度的怀疑,当时一直觉得“慢了点”,但实在太忙,只能知其然不知其所以然。。
为了把时间调得尽量准,我掐着秒表对着1S的流水灯调了好大一会儿才慢慢接近了。。
但肯定这样是不可能准确的,因为裸奔框架的需要,只能是尽量弄得准一点了。
谢Ryanhsiung兄解疑,好样的!

使用特权

评论回复
11
Ryanhsiung|  楼主 | 2011-11-25 12:19 | 只看该作者
本帖最后由 Ryanhsiung 于 2011-11-25 12:23 编辑
是该抽点时间学习一下了。
dong_abc 发表于 2011-11-24 23:02

恩,本以来入了门,其实门槛都没摸到!


https://bbs.21ic.com/icview-287910-1-1.html  
这是叶工的回复:呵呵,LZ应该认真去看C18的编译器手册,你的这些问题在编译器手册都会有答案,几句话很难讲清楚的。

使用特权

评论回复
12
Ryanhsiung|  楼主 | 2011-11-26 12:45 | 只看该作者
NU LINK在某些时候会不稳定,需要断开连接恢复!
  这个问题浪费我好多时间!!写出来,让新手注意一下

使用特权

评论回复
13
Metalor| | 2011-11-26 18:17 | 只看该作者
还没有遇到过楼上的问题
还比较稳定
我用的是官方ICP

使用特权

评论回复
14
Ryanhsiung|  楼主 | 2011-11-29 18:41 | 只看该作者
13# Metalor 不是指ICP,是在线DEBUG过程中

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

认证:嵌入式技术专家
简介:道阻且长,行则将至!

64

主题

4658

帖子

14

粉丝