发新帖我要提问
12
返回列表
打印
[STM8]

STM8开发板测试

[复制链接]
楼主: 明月小厨
手机看帖
扫描二维码
随时随地手机跟帖
21
明月小厨|  楼主 | 2012-12-7 09:12 | 只看该作者 回帖奖励 |倒序浏览
本帖最后由 明月小厨 于 2012-12-7 09:18 编辑

#pragma vector=1
__interrupt void TRAP_IRQHandler(void)
{}
#pragma vector=2
__interrupt void TLI_IRQHandler(void)
{}
#pragma vector=3
__interrupt void AWU_IRQHandler(void)
{}
#pragma vector=4
__interrupt void CLK_IRQHandler(void)
{}
#pragma vector=5
__interrupt void EXTI_PORTA_IRQHandler(void)
{}
#pragma vector=6
__interrupt void EXTI_PORTB_IRQHandler(void)
{}
#pragma vector=7
__interrupt void EXTI_PORTC_IRQHandler(void)
{}
#pragma vector=8
__interrupt void EXTI_PORTD_IRQHandler(void)
{}
#pragma vector=9
__interrupt void EXTI_PORTE_IRQHandler(void)
{}

#pragma vector=0xC
__interrupt void SPI_IRQHandler(void)
{}
#pragma vector=0xD
__interrupt void TIM1_UPD_OVF_TRG_BRK_IRQHandler(void)
{}
#pragma vector=0xE
__interrupt void TIM1_CAP_COM_IRQHandler(void)
{}
#pragma vector=0xF
__interrupt void TIM2_UPD_OVF_BRK_IRQHandler(void)
{
}
#pragma vector=0x10
__interrupt void TIM2_CAP_COM_IRQHandler(void)
{}
#pragma vector=0x11
__interrupt void TIM3_UPD_OVF_BRK_IRQHandler(void)
{}
#pragma vector=0x12
__interrupt void TIM3_CAP_COM_IRQHandler(void)
{}
#pragma vector=0x13
__interrupt void UART1_TX_IRQHandler(void)
{}
#pragma vector=0x14
__interrupt void UART1_RX_IRQHandler(void)
{}
#pragma vector=0x15
__interrupt void I2C_IRQHandler(void)
{}
#pragma vector=0x16
__interrupt void UART3_TX_IRQHandler(void)
{}
#pragma vector=0x17
__interrupt void UART3_RX_IRQHandler(void)
{}
#pragma vector=0x18
__interrupt void ADC2_IRQHandler(void)
{}
#pragma vector=0x19
__interrupt void TIM4_UPD_OVF_IRQHandler(void)
{}
#pragma vector=0x1A
__interrupt void EEPROM_EEC_IRQHandler(void)
{}

使用特权

评论回复
22
明月小厨|  楼主 | 2012-12-7 09:20 | 只看该作者
中断的事明白了,还有一个是堆栈;这个编译器竟然已经帮我自动处理好了;

使用特权

评论回复
23
明月小厨|  楼主 | 2012-12-9 04:23 | 只看该作者
我被STM8S105的中断搞的头晕;TIM3定时周期好象不可调,而且频率超高;
搞了一夜没搞好;明天再检查检查;

使用特权

评论回复
24
明月小厨|  楼主 | 2012-12-9 11:24 | 只看该作者
明月小厨 发表于 2012-12-9 04:23
我被STM8S105的中断搞的头晕;TIM3定时周期好象不可调,而且频率超高;
搞了一夜没搞好;明天再检查检 ...

一直搞到天快亮,头真的晕了,没有示波器,只能是目视判断,一直亮,从亮度是看;
最合理,频率超高,设
TIM3_PSCR = 0x09;//主频16MHZ,产生32uS的基准;
TIM3_IER = 1;
TIM3_ARRH = (1*1000000/32)>>8; //约1秒
TIM3_ARRL = (1000000/32);
TIM3_CR1 = 1;//开启

使用特权

评论回复
25
明月小厨|  楼主 | 2012-12-9 11:28 | 只看该作者
明月小厨 发表于 2012-12-9 11:24
一直搞到天快亮,头真的晕了,没有示波器,只能是目视判断,一直亮,从亮度是看;
最合理,频率超高,设
TIM3_PSC ...

调整相关的设置看不出任何效果,最后判断是中断执行的速度非常快非常频繁;
在中断服务程序内设置计数器,最后结论是:一直在中断里全速运行,
直到临睡前,才想起来,是不是有什么中断标志?要软件手动清除今天上来一试,果然如此,搞了好几个小时,折腾人啊~~~~~~~~~~~~~

使用特权

评论回复
26
明月小厨|  楼主 | 2012-12-9 11:30 | 只看该作者
#pragma vector=0x11
__interrupt void TIM3_UPD_OVF_BRK_IRQHandler(void)
{
  PD_ODR++;//闪灯,正好是PD0位;
  TIM3_SR1=0;//关键点,没有它,就一直在中断里跑,一出来就又回去了.
  return;
}

使用特权

评论回复
27
明月小厨|  楼主 | 2012-12-9 11:36 | 只看该作者
明月小厨 发表于 2012-12-9 11:30
#pragma vector=0x11
__interrupt void TIM3_UPD_OVF_BRK_IRQHandler(void)
{

从名称上看
__interrupt void TIM3_UPD_OVF_BRK_IRQHandler(void)
更新有了,溢出有了,刹车也在,都挤在一起中断服务程序里面了.
如果是一对多中断,这不是又乱了套;
STM8S的中断要小心处理了.

使用特权

评论回复
28
明月小厨|  楼主 | 2012-12-9 11:51 | 只看该作者
TIMx_PSCR = 0x09;//主频16MHZ,产生32uS的基准;
TIMx_ARRH = (2*1000/32)>>8; //约2m秒,具体设多少让编译器去算,它算的更快更准.
TIMx_ARRL = (u8)(1000/32);
这个2mS是刷新显示的周期,16mS刷一个轮回,不会产生闪烁感.

使用特权

评论回复
29
明月小厨|  楼主 | 2012-12-10 16:09 | 只看该作者
今天学到一招,位操作;公布出来分享;
问题的提出:
因为前次点LED灯用的是寄存器操作;而灯只有一路,PD0;
所以一直在想,如果象51单片机一样,直接操作PD0位呢?

使用特权

评论回复
30
明月小厨|  楼主 | 2012-12-10 16:12 | 只看该作者
明月小厨 发表于 2012-12-10 16:09
今天学到一招,位操作;公布出来分享;
问题的提出:
因为前次点LED灯用的是寄存器操作;而灯只有一路,PD0;

PD_ODR_ODR0;
原来是这样的啊;
我原以为是PD_ODR_0;或PD_ODR0;
取反PD0的代码如下:
~PD_ODR_ODR0;


使用特权

评论回复
31
明月小厨|  楼主 | 2012-12-10 16:26 | 只看该作者
顺便特别友情提醒:
有关STM8的外部晶振时钟,我在其它网站论坛中发现很多人质疑.
在有些环境下空中辐射干扰稍严重就容易引起系统复位;STM32也有同样的先天性固有缺陷.
解决办法1):使用内部HSI时钟;
解决办法2):使用外部有源时钟;


联想以前NXP的LPC21XX存在上电后不能正常复位的BUG;出现概率约1/100~2/100;
解决办法上:快速上电(电源电容不能多);然后复位设定时间>0.2S;

使用特权

评论回复
32
yangtao1126| | 2012-12-19 11:39 | 只看该作者
楼主,乐在其中!

使用特权

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

本版积分规则