20130822-STM8L101F3P6的PD0使用异常,尚未解决~!

原创 2013年08月22日 17:10:14

问题描述:

在STM8L101F3P6的PD0这个口,其控制一个NMOS来控制某设备的供电情况,电路如图下:

1、初始化函数中设置PD0为推挽输出高电平:

GPIO_Init(GPIOD,POWER_UP,GPIO_Mode_Out_PP_High_Fast);  

但此后,在GPIO_SetBits(GPIOD,GPIO_Pin_0);的时候,会出现如下错误:

 

2、 设置为推挽输出低电平

GPIO_Init(GPIOD,POWER_UP,GPIO_Mode_Out_PP_Low_Fast);

时,问题依旧。

 

3、初始化GPIO时,不初始化该函数,不出现上述问题,但调试遇到GPIO_SetBits(GPIOD,GPIO_Pin_0)时也会出现上述的情况。很奇怪。

 

4、同样的电路在PA口无问题,PA2、PA3接上述电路可正常控制及正常调试。

 

5、更换PB0和PB6控制上述电路,问题依旧,并且调试几次后,ST-LINK无法正常连接单片机,芯片损坏。

 

目前这个问题无法解决,只能用替代方案不使用相应的IO口来解决。接下来看一下用户手册。

--------------------------------------------------------------------------------------------------------------------------

1、IO口原理结构图如下,上述问题估计和内部寄存器状态和IO输出级的MOS有关,但无法确认。

 

2.复位后的IO状态有如下描述:

 

 

这算是什么说词,告诉我a few pins,哪些pins啊?什么different行为啊?相关手册的pinout详细描述在哪里?狂晕。。。。

 --------------------------------------------------------------------------------------------------------------

测试程序如下:

#include "stm8l10x.h"

void GPIO_Init_my(void);
static void BoardInit(void);
static void CLK_Init(void);

uint8_t Status=0;

void main(void)
{ 
	BoardInit();	
	enableInterrupts();	

	while (1)
	{	
		switch(Status)
		{
			case 0://待机
					GPIO_ResetBits(GPIOD,GPIO_Pin_0);
					Status=1;
				break;
			case 1:
					GPIO_Init(GPIOD,GPIO_Pin_0,GPIO_Mode_Out_PP_High_Fast);
					Status=0;
				break;
			default:
				break;
		}
	}	
}	

void BoardInit(void)
{
	CLK_Init();
	GPIO_Init_my();
}

void CLK_Init(void)
{
	CLK_DeInit();
	CLK_MasterPrescalerConfig(CLK_MasterPrescaler_HSIDiv1);
}

void GPIO_Init_my(void)
{
	GPIO_Init(GPIOA,GPIO_Pin_2,GPIO_Mode_Out_PP_High_Fast);
	GPIO_Init(GPIOA,GPIO_Pin_3,GPIO_Mode_Out_PP_High_Fast);
	
	GPIO_Init(GPIOB,GPIO_Pin_All,GPIO_Mode_Out_PP_High_Fast);
	
	GPIO_Init(GPIOC,GPIO_Pin_All,GPIO_Mode_Out_PP_High_Fast);
	
	GPIO_Init(GPIOD,GPIO_Pin_0,GPIO_Mode_Out_PP_Low_Fast);	
}


 

 

版权声明:本文为博主原创文章,未经博主允许不得转载。

20131007-STM8L101F3P6关于硬件IIC写时序和勘误部分的翻译

写时序 -----------------------------------------------------------------------------------------------...

20140624-STM8L101F3P6串口查询发送

先说几句,一直都没有对STM8的串口应用进行总结,最近小结一下

20140627-STM8L101F3P6关于微秒级延时函数不同写法的波形

1.STM8L101F3P6工作在16MHz下,延时函数程序如下: /****************************************************************...

20140627-STM8L101F3P6关于毫秒级延时函数不同写法的波形

总结一下STM8L101F3P6工作在16MHz下,利用死循环、中断等不同写法的微秒级延时函数精度的情况。 一、死循环空指令的写法,延时函数程序如下:...

20140624-STM8L101F3P6查询发送中断接收

/******************************Copyright (c)***********************************/ /* ...

STM8L101F3P6引脚说明图

  • 2016年12月13日 12:34
  • 2.68MB
  • 下载

关于STM8S003F3P6开发的笔记v

淘宝买了个STM8S003开发板,只有几块钱啊有木有!!!感觉完全是冲着他这么便宜的价钱买来的,不过话又说回来了便宜没好货,这话一点也不价。最近调试激光农业设备,自己买来了STM32F407这款当今(...

stm8s103f3p6的延时函数

使用stm8s时本来期望能够产生1us精度的脉冲,但是调来调去也没能实现。目前的情况是使用内部16MHz的RC时钟源,然后给到timer4,再经 8分频产生一个25us的中断,我能搞出来的最小中断周期...
  • k7arm
  • k7arm
  • 2017年06月25日 18:19
  • 932

stm32f103c8t6移植uCOS Ⅲ出现Error: L6407W,解决方法:内核配置以减小代码规模

笔者在移植uCOS Ⅲ到stm32f103c8时碰到如下问题 Error: L6407W: Sections of aggregate size 0x6c48 bytes could not fit...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:20130822-STM8L101F3P6的PD0使用异常,尚未解决~!
举报原因:
原因补充:

(最多只允许输入30个字)