打印
[STM8]

STM8开发板测试

[复制链接]
4558|31
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
开发板是周六上午到的,当时有事出门,没测试.
周六晚上找了根USB线接上,一不小心联机下载调试空程序,把原来LED闪啊闪的程序擦掉了.
但联机成功,可以下载调试了.
今天想想,不如把LED灯点一下.应该是容易吧,不就一根线.
沙发
明月小厨|  楼主 | 2012-12-2 22:17 | 只看该作者
这根线联在哪,开发板也太简洁了,几乎什么资料都没有;
从ST官方的原理上看了一下,原来是PD端口的第4位;
从固件库里把IO的头文件找了出来,然后把IO的C文件把找出来了;
不知道从哪里还有一个例程.例程是二个LED灯;
改掉,测试结果,灯没亮.

使用特权

评论回复
板凳
明月小厨|  楼主 | 2012-12-2 22:18 | 只看该作者
仔细核对一下,发现不是第4脚,是PD端口的0脚;
改成0;
随便把延时的参数也改一下,100改成10;再试
LED灯一直亮;

使用特权

评论回复
地板
明月小厨|  楼主 | 2012-12-2 22:19 | 只看该作者
有可能是10mS闪一下,闪的太快了;
改在200;即200mS闪一下;
正常了

使用特权

评论回复
5
明月小厨|  楼主 | 2012-12-2 22:21 | 只看该作者
用手摸所有的引脚,没事,摸16MHZ的晶振.仍没事,估计晶振停掉后,内部的HSI接管了;
看来抗干扰还可以,要不就是我的手能量不行.

使用特权

评论回复
6
明月小厨|  楼主 | 2012-12-2 22:29 | 只看该作者
IAR编译后的信息太简单了,改了一下设置,显示所有的信息,这下全出来了,尤其是资源的使用情况;

使用特权

评论回复
7
yangmao0125| | 2012-12-3 10:58 | 只看该作者
:dizzy:

使用特权

评论回复
8
明月小厨|  楼主 | 2012-12-3 11:26 | 只看该作者
第一次接触STM8,竟然如此顺利,好兆头啊;以前有人发STM8的资料给我,我竟然一点兴趣都没有.甚至价格都没有看过.一个偶然的事件,让我想起来有这么一款8位机,于是就看了一下资料,吃了一惊.
外设太丰富了,尤其是PWM相关的定时器,用这个说不定可以做变频器主控.
开发环境是什么呢?这个重要的,STVD,没听说过;于是就用IAR FOR STM8;这个至少以前用过IAR,用过几天.
手头还有IAR FOR ARM的资料,这个应该完全可以参考的.
只是C语言有二年没碰过了,差不多忘光了.昨天半夜睡不着,把几本C语言的书找了出来看看.

使用特权

评论回复
9
lylhe| | 2012-12-3 18:25 | 只看该作者
。。。哈哈。
我也搞过STM8 但是是先期的,也是点灯,点LCD。 不知道怎么进行了。

使用特权

评论回复
10
明月小厨|  楼主 | 2012-12-4 01:31 | 只看该作者
就在刚才,又用IAR上去试了试,想看看仿真器的型号;顺便下载试了一下;
结果出来很多错误,仔细一看,下载失败;
......

使用特权

评论回复
11
明月小厨|  楼主 | 2012-12-4 01:33 | 只看该作者
反复捣鼓了几下后确认是STM8写保护了;
我这才想起来,用IAR调试可以,但如何加密呢?昨天用STVP测试过,
加密后不能读;原来是可以把程序读出来的;
写保护怎么去掉?整片擦除也被禁止了;

使用特权

评论回复
12
明月小厨|  楼主 | 2012-12-4 01:35 | 只看该作者
又反复捣鼓了一阵子,总算擦掉了.
再用IAR试试,正常了.吓我一跳.我只有这一个片子.

使用特权

评论回复
13
明月小厨|  楼主 | 2012-12-4 01:41 | 只看该作者

这是我用一整天的时间捣鼓出来的板子;STM8S;
用到定时器,ADC,I2C,IO输出,EEPROM读写功能;

使用特权

评论回复
14
libin1009| | 2012-12-4 16:44 | 只看该作者

使用特权

评论回复
15
明月小厨|  楼主 | 2012-12-7 00:06 | 只看该作者
关于SWIM和PD0;
心想,这个PD0端口是肯定要初始化的;无论是输入还是输出,SWIM怎么办?
幸好STM8设计者比较聪明,又增加了一个设置,即SWIM是否有效,
SWIM有效时PD0怎么设都没用;
只有在禁止了SWIM功能后,这个端口才可以配置成IO端口;
原来如此!放心了.

使用特权

评论回复
16
明月小厨|  楼主 | 2012-12-7 00:12 | 只看该作者
时钟和IO端口已经看清楚了;
下一步要解决的问题是定时器和中断;
分二步完成,先解决定时器,再解决中断;听说T1比较复杂,要不就用T2也行;
再往下就是ADC;(4个通道)
再往下就是EEPROM;(偶尔读读写写)
再往下就是I2C通讯;这是最后一关;

使用特权

评论回复
17
明月小厨|  楼主 | 2012-12-7 00:15 | 只看该作者
不用串口UART,理由是对时序要求严格,内部时钟不太准,
同时外部要配SP232;而这个SP232我是真的不放心(容易坏掉,虽然几率不是很高).

使用特权

评论回复
18
明月小厨|  楼主 | 2012-12-7 08:32 | 只看该作者
关于中断处理,特别是中断向量表和中断函数怎么挂勾,我一直找不到北.资料好象在什么地方见到过,还说IAR的声明方式有些特别.现在我大致搞清楚了.
参考资料:王志杰 STM8程序设计和风驰的文档.

中断服务程序的样本:
#pragma vector = 0x02
__interrupt void interrupu_handler(void)
{
;
}

使用特权

评论回复
19
明月小厨|  楼主 | 2012-12-7 08:44 | 只看该作者
#pragma vector = 0x02 (注意后面没有";")
__interrupt void my_int_pro(void)

#pragma vector = 0x02
__interrupt  (函数名称随便你,但返回类型必须是void,参数也是void)

这一部分是告诉编译器,这是一个中断处理函数,中断号是0x02;对应的中断向量是0x008008;

奇怪的是IAR把0x008000划到中断里面了,对应的中断号是0x00;
而中断号0x01是软件中断;
后面才是其它的外设的中断向量.

也许就是这个原因导致中断编号和中断向量间差了2个;

使用特权

评论回复
20
明月小厨|  楼主 | 2012-12-7 09:02 | 只看该作者
前次有人讨论怎么修改用户程序的入口地址,0x008000;
现在不需要编译器处理了,你自己定义中断号为0的跳转地址就行了;
难道从0x008000跳出来的目标地址不是main()?

使用特权

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

本版积分规则

个人签名:爱你一万年

35

主题

1072

帖子

2

粉丝