[STM8] stm8l beep 不能工作啥子原因呢?

[复制链接]
8581|17
 楼主| 无情剑客 发表于 2010-11-23 10:54 | 显示全部楼层 |阅读模式
配置完BEEP

BEEP_Cmd(ENABLE);

BEEP没有输出什么原因呢?
lzymcu 发表于 2010-11-23 11:50 | 显示全部楼层
在option选项中,需要把此IO配置成beep
 楼主| 无情剑客 发表于 2010-11-23 11:58 | 显示全部楼层
IAR中 stm8l 怎么设置???
zxd_hifi 发表于 2010-11-23 12:03 | 显示全部楼层
同样的问题,求解:
cpu:STM8L152C6T6使用BEEP功能,配置后不能启动BEEP,BEEP无输出波形,尝试读取BEEP的CSR2值为0x1F。
代码:楼下附
zxd_hifi 发表于 2010-11-23 12:05 | 显示全部楼层
void Beep_Init(void)
{//BEEP初始化代码
          uint8_t temp;
       
        CFG->GCR = CFG_GCR_SWD;//由于BEEP未启动,尝试关闭调试接口,结果还是不行
        BEEP_DeInit();
          GPIO_Init(BEEP_PORT, BEEP_PIN, GPIO_Mode_Out_PP_Low_Slow);
        CLK_BEEPClockConfig(CLK_BEEPCLKSource_LSI); //内部低速时钟在另外的地方开启了
//        BEEP_LSClockToTIMConnectCmd(ENABLE);
        BEEP_LSICalibrationConfig(37000);
        BEEP_Init(BEEP_Frequency_1KHz);
        BEEP_Cmd(ENABLE);
        temp = BEEP->CSR2;
        printf("\r\nThe BEEP SCR2 val is:%x",temp);
}
zxd_hifi 发表于 2010-11-23 12:11 | 显示全部楼层
问题:
1:在stm8S系列中,有关于BEEP功能IO映射配置,在stml152c6中未找到如此寄存器?而在这里是否需要配置呢???
2:若开启BEEP是否需要关闭调试接口???
     见数据手册上描述有(page32):When SWIM mode is enabled, the SWIM pin cannot be used as general purpose I/O.但是关闭后仍然不行。
3:其次发现固件库里面有一个bug:在打开BEEP到tim2的校准的时候,库函数错误的写了CSR2,根据数据手册正确的应该是CSR1才对吧。固件库代码:
void BEEP_LSClockToTIMConnectCmd(FunctionalState NewState)
{
  /* Check the parameters */
  assert_param(IS_FUNCTIONAL_STATE(NewState));

  if (NewState != DISABLE)
  {
    /* Enable the BEEP peripheral */
    BEEP->CSR2 |= BEEP_CSR1_MSR;//此处是否是错误了呢????
  }
  else
  {
    /* Disable the BEEP peripheral */
    BEEP->CSR2 &= (uint8_t)(~BEEP_CSR1_MSR);
  }
}

有用过的朋友看到请赐教,谢谢!
麻烦版主看到请帮忙分析。在线等待!
 楼主| 无情剑客 发表于 2010-11-25 10:16 | 显示全部楼层
香版主是不是问题太简单了?
帮忙看看什么原因好吗???
香水城 发表于 2010-11-25 11:02 | 显示全部楼层
不好意思,俺还没有玩过这个东西。
 楼主| 无情剑客 发表于 2010-11-25 11:21 | 显示全部楼层
谢谢!!香版主
ST_ARM 发表于 2010-11-25 13:44 | 显示全部楼层
2楼说的是正确的,IAR软件是不可以做次操作,用户如果使用了ST-Link作为调试工具,可以到ST的网站上下载ST visual programmer这个软件,该软件可以对Option字节进行编程。
zxd_hifi 发表于 2010-11-25 14:55 | 显示全部楼层
:L可是问题是STM8S系列才有此选择项,此项不一定要在ide界面修改,可以在自己运行代码里面修改。但此处是STM8L152C6,此片子在Option bytes里并无关于BEEP的设置啊
连此寄存器都不能进行正确的读写,纳闷了。
vigia 发表于 2010-11-25 15:01 | 显示全部楼层
要用BEEP就一定要关掉SWIM

我刚才试了试,MS在SWIM模式下,是不能通过写CFG->GCR来关闭SWIM的,也就是说PA0仍然作为SWIM脚在工作。

LS的试试非调试模式下,BEEP是否能工作。
zxd_hifi 发表于 2010-11-25 15:07 | 显示全部楼层
非调试模式,下载代码到里面运行是否算非调试模式呢!
若是,那就试过了,并在此时曾试过,初始化这个PA0后,使用软件设置io高低是正确的。
此外还有一个问题,曾试图读取BEEP-CSR2的值,其结果为复位值0x1f并非为设定值。
 楼主| 无情剑客 发表于 2010-11-29 16:54 | 显示全部楼层
本帖最后由 无情剑客 于 2010-11-29 17:03 编辑

4.jpg

1.jpg

2.jpg

3.jpg

大家看看上面两幅图片为什么地址不一样呢?到底是哪个正确啊????datasheet是刚刚从st网站上下载的。
zykzyk 发表于 2012-3-8 15:53 | 显示全部楼层
我也有同样的问题困扰。
CHANGYONG1125 发表于 2012-10-9 13:49 | 显示全部楼层
我也在问这个问题呀
CHANGYONG1125 发表于 2012-10-9 13:50 | 显示全部楼层
知道的回我Q Q 135   1032   ...359
sz189981 发表于 2014-8-23 16:42 | 显示全部楼层
请问楼主这个问题解决了吗?
我设置stm8l152C6的beep。设置过了CLK_CBEEPR,CLK_ICKCR,BEEP_CSR1和BEEP_CSR2,但还是没有波形输出。还有什么没设置吗?
您需要登录后才可以回帖 登录 | 注册

本版积分规则

3

主题

16

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部