打印
[STM8]

STM8s003引脚输出问题

[复制链接]
6768|15
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
luoyelinyu|  楼主 | 2015-4-21 17:48 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
我用STM8的PB4和PB5还有PC口作为i/o口输出信号,为什么PC口输出正常,PB口无信号输出,控制程序没有问题,以下是端口配置
void GPIO_Inint()
{
  GPIOC->DDR = 0xef;     //设置PC口PC4为模拟输入其它为输出
  GPIOC->CR1 = 0xef;     
  GPIOC->CR2 = 0x00;
  
  GPIOB->DDR = 0x30;     //    00110000#设置PB口PB45输出其它为输入
  GPIOB->CR1 = 0x30;     
  GPIOB->CR2 = 0x00;   
  
}
求帮忙
沙发
joyme| | 2015-4-21 17:53 | 只看该作者
PB4、5是OD口,需要外部上拉

使用特权

评论回复
板凳
luoyelinyu|  楼主 | 2015-4-21 17:55 | 只看该作者
我加了300R的上拉电阻啊!

使用特权

评论回复
地板
405145230| | 2015-4-21 18:07 | 只看该作者
IO 备置问题,

使用特权

评论回复
5
luoyelinyu|  楼主 | 2015-4-21 18:16 | 只看该作者

我上面有i/o配置程序,我想知道哪出问题了  能细说一下吗?

使用特权

评论回复
6
luoyelinyu|  楼主 | 2015-4-21 18:17 | 只看该作者
joyme 发表于 2015-4-21 17:53
PB4、5是OD口,需要外部上拉

我加了300R的上拉电阻的

使用特权

评论回复
7
21icszx| | 2015-4-21 19:45 | 只看该作者
是不是上拉电阻太小了,PB4、5口不能驱动高电流

使用特权

评论回复
8
mmuuss586| | 2015-4-21 20:15 | 只看该作者
STM8和32不同,很多引脚都要加上拉电阻才行;

使用特权

评论回复
9
luoyelinyu|  楼主 | 2015-4-22 09:02 | 只看该作者
mmuuss586 发表于 2015-4-21 20:15
STM8和32不同,很多引脚都要加上拉电阻才行;

我用了五个i/o口,PB4,PB5,PC3,PC5,PC6。除PB两个引脚不能输出外,其余i/o口正常输出,而且我都是加的300R的上拉电阻,以下有我i/o口具体配置
void ADC_Inint()
{
  GPIOD->DDR = 0x93;   //  10010011# PD(2,3,5,6)为模拟输入口,其他为推挽输出
  GPIOD->CR1 = 0x93;
  GPIOD->CR2 = 0x00;
  
  
  /*
  GPIOC->DDR = 0xef;  // 11101111# PC4为模拟输入,其他端口为推挽输出
  GPIOC->CR1 = 0xef;
  GPIOD->CR2 = 0x00;
*/
  
// 初始化A/D 模块
ADC1->CR2 = 0x08; // A/D 结果数据右对齐  
ADC1->CR1 = 0x00; // ADC 时钟=主时钟/2=8MHZ
// ADC 转换模式为单次
// 禁止ADC 转换
  ADC1->TDRL = 0xff;   //禁止斯密特触发
}

void GPIO_Inint()
{
  GPIOC->DDR = 0xef;     //设置PC口PC4为模拟输入其它为输出
  GPIOC->CR1 = 0xef;     
  GPIOC->CR2 = 0x00;
  GPIOB->DDR = 0x30;     //    00110000#设置PB口PB45输出其它为输入
  GPIOB->CR1 = 0x30;     
  GPIOB->CR2 = 0x00;   
  

  
}
求解答 急用!!!

使用特权

评论回复
10
xjjspace| | 2015-4-22 10:29 | 只看该作者
你这样不应该一点输出都没有的呀,起码也得有1点多V吧

使用特权

评论回复
11
luoyelinyu|  楼主 | 2015-4-22 11:49 | 只看该作者
xjjspace 发表于 2015-4-22 10:29
你这样不应该一点输出都没有的呀,起码也得有1点多V吧

好吧!看来我要把所有代码贴出来
#include "stm8s.h"
#include "IAR_OPTIMIZE.h"

#define Number        20



#define SET_PB5       GPIOB->ODR |=0x20
#define CLR_PB5       GPIOB->ODR &=0xDF


u8 R,G,BL;
u16 first_result,second_result,third_result,forth_result,fifth_result;

void Delayms(u16 t)   //毫秒延时
{   
    unsigned int i;   
    while(t--)     
    for(i=900;i>0;i--)   
    {
      
    }
}   



void send_2811_24bits_1( u8 dat1, u8 dat2, u8 dat3)   //驱动函数
{
  u8 a;
  IWDG->KR=0xAA;  //将看门狗重载寄存器值写入计数器
  a=8;
  while(a)

使用特权

评论回复
12
luoyelinyu|  楼主 | 2015-4-22 11:54 | 只看该作者
xjjspace 发表于 2015-4-22 10:29
你这样不应该一点输出都没有的呀,起码也得有1点多V吧

太多   用附件吧

代码.rar

2.26 KB

使用特权

评论回复
13
luoyelinyu|  楼主 | 2015-4-22 11:57 | 只看该作者
xjjspace 发表于 2015-4-22 10:29
你这样不应该一点输出都没有的呀,起码也得有1点多V吧

我也觉得不应该  但情况是这样,换了芯片还是不行,硬件电路检查后并未发现问题

使用特权

评论回复
14
北极星405| | 2015-4-22 16:27 | 只看该作者
不应该,楼主使用在线调试,直接查看下寄存器?

使用特权

评论回复
15
wxjcan| | 2015-4-22 21:31 | 只看该作者
以前忘记加上拉电阻时出现过这种问题,后来加上拉,配置为OD输出就可以了

使用特权

评论回复
16
行云_流水| | 2015-4-23 15:56 | 只看该作者
软件上配置强推挽输出模式后,尝试加2k----10k的上拉电阻,我第一次用这个型号的芯片,也碰到这个问题,后来加了上拉就正常了

使用特权

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

本版积分规则

2

主题

15

帖子

0

粉丝