打印
[STM8]

stm8l101单片机PB0,PD0口电平没有Toggle....

[复制链接]
3587|12
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
AVS09873|  楼主 | 2014-12-31 13:41 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
如题,本人刚入手stm8l系列单片机,目前是在ST官网上下载了固件库,想试一下GPIO的操作。。。
按照固件库里面的程序例程,自己建了一个Project,编译通过后,看不到PB0,PD0口的电平Toggle。。。
main程序如下(基本上和ST给的程序一样):
#include "stm8l10x.h"
#include "stm8l10x_gpio.h"

void Delay(__IO uint16_t nCount);

void main(void)
{
  // GPIO_DeInit(GPIOB);
   //GPIO_DeInit(GPIOD);
   GPIO_Init(GPIOB, GPIO_Pin_0, GPIO_Mode_Out_PP_Low_Fast);
   GPIO_Init(GPIOD, GPIO_Pin_0, GPIO_Mode_Out_PP_Low_Fast);
  
  while(1)
{
   GPIO_ToggleBits(GPIOB, GPIO_Pin_0);
   GPIO_ToggleBits(GPIOD, GPIO_Pin_0);
   Delay(0xFFFF);
}
}


void Delay(__IO uint16_t nCount)
{
  /* Decrement nCount value */
  while (nCount != 0)
  {
    nCount--;
  }
}

#ifdef  USE_FULL_ASSERT

/**
  * @brief  Reports the name of the source file and the source line number
  *   where the assert_param error has occurred.
  * @param  file: pointer to the source file name
  * @param  line: assert_param error line source number
  * @retval None
  */
void assert_failed(uint8_t* file, uint32_t line)
{
  /* User can add his own implementation to report the file name and line number,
     ex: printf("Wrong parameters value: file %s on line %d\r\n", file, line) */
  /* Infinite loop */
  while (1)
  {}
}
#endif

硬件电路图如附件。
还请各位大牛不吝解惑,在线等,谢谢!

原理图.JPG (31.29 KB )

原理图.JPG
沙发
AVS09873|  楼主 | 2014-12-31 13:50 | 只看该作者
自己先顶个。
我刚刚仿真了一下。打开IAR 中的Register管理器,在运行到GPIO_ToggleBits(GPIOB, GPIO_Pin_0);时,
PB0,PD0口是有在变化的,在0,1之间变化。。。。如附件图。

Debugger.JPG (146.65 KB )

Debugger.JPG

使用特权

评论回复
板凳
AVS09873|  楼主 | 2014-12-31 13:51 | 只看该作者
难道是硬件上的问题?

使用特权

评论回复
地板
sunmeat| | 2014-12-31 14:10 | 只看该作者
程序目测没问题,你工程的目标芯片选对了没,硬件有问题没

使用特权

评论回复
5
AVS09873|  楼主 | 2014-12-31 14:20 | 只看该作者
sunmeat 发表于 2014-12-31 14:10
程序目测没问题,你工程的目标芯片选对了没,硬件有问题没

OK,原来是我的芯片没选对。。。。:(
晕死,看来以后要多加细心。。。。
谢谢!

设置.JPG (164.21 KB )

设置.JPG

使用特权

评论回复
6
AVS09873|  楼主 | 2014-12-31 14:33 | 只看该作者
sunmeat 发表于 2014-12-31 14:10
程序目测没问题,你工程的目标芯片选对了没,硬件有问题没

再请教一下,我的这个板子上的外部晶振为什么用示波器量了没有信号?是不是需要软件启动?

使用特权

评论回复
7
AVS09873|  楼主 | 2014-12-31 14:34 | 只看该作者
AVS09873 发表于 2014-12-31 14:33
再请教一下,我的这个板子上的外部晶振为什么用示波器量了没有信号?是不是需要软件启动? ...

现在两个LED都是在闪了,但是不知道为什么晶振没起振,感觉很奇怪

使用特权

评论回复
8
小浣熊| | 2014-12-31 15:14 | 只看该作者
晶振没起振的原因,这个不是很清楚啊。

使用特权

评论回复
9
mmuuss586| | 2014-12-31 23:56 | 只看该作者

解决了就好;
指令本身肯定没问题的;

使用特权

评论回复
10
周董| | 2015-1-2 12:39 | 只看该作者
Delay(0xFFFF);这个是多长时间啊??

使用特权

评论回复
11
AVS09873|  楼主 | 2015-1-4 19:35 | 只看该作者
周董 发表于 2015-1-2 12:39
Delay(0xFFFF);这个是多长时间啊??

实际测试下来,LED差不多以1s的周期闪烁

使用特权

评论回复
12
周董| | 2015-1-6 22:33 | 只看该作者
AVS09873 发表于 2015-1-4 19:35
实际测试下来,LED差不多以1s的周期闪烁

哦哦 这个是比较正常的情况吧

使用特权

评论回复
13
AVS09873|  楼主 | 2015-1-7 12:14 | 只看该作者
周董 发表于 2015-1-6 22:33
哦哦 这个是比较正常的情况吧

Delay(0xFFFF),延时应该就是65535自减的时间,但是不知道这差不多1s的时间是怎么算出来的?

使用特权

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

本版积分规则

2

主题

17

帖子

0

粉丝