Summiss 2014-12-11 03:05 采纳率: 33.3%
浏览 5711
已采纳

STM8S时钟和串口初始化问题

我用的是IAR编译环境,单片机是STM8S105C4T6,但是在时钟初始化中,
CLK__CKDIVR=0x00;这句中的CLK__CKDIVR一直提示找不到这个函数;
并且在串口UART1初始化时也是一样。头文件用的是stm8s.h和stm8s_uart1.h
想问一下这是什么原因

  • 写回答

1条回答

  • syxarm 2014-12-11 08:31
    关注

    我使用的是stm8s003。应该是差不多的。
    不知道你有没有实行官方的固件库,固件库里的写法是CLK->CKDIVR。
    固件库里的串口配置函数直接配置是可以使用的。
    static void CLK_Config(void)
    {
    CLK_DeInit();
    CLK_HSICmd(ENABLE);
    CLK_HSIPrescalerConfig(CLK_PRESCALER_HSIDIV2); //hsi/2 =8M
    CLK_SYSCLKConfig(CLK_PRESCALER_HSIDIV1); //fmaster = hsi /hsi分频比
    CLK_SYSCLKConfig(CLK_PRESCALER_CPUDIV1); //fcpu = fmaster/分频比

    //  CLK_FastHaltWakeUpCmd(ENABLE);
    
    // GPIO_Init(GPIOC,GPIO_PIN_4,GPIO_MODE_OUT_PP_HIGH_FAST);
    // CLK_CCOConfig(CLK_OUTPUT_MASTER);
    
    close_all_peripheralClock();
    

    }
    void UART_Config(void)
    {
    CLK_PeripheralClockConfig(CLK_PERIPHERAL_UART1, ENABLE);
    UART1_DeInit();
    #if 0
    UART1_Init((uint32_t)115200, UART1_WORDLENGTH_8D, UART1_STOPBITS_1, UART1_PARITY_NO,
    UART1_SYNCMODE_CLOCK_DISABLE, UART1_MODE_TXRX_ENABLE);

    /* Enable UART1 Transmit interrupt*/
    UART1_ITConfig(UART1_IT_TC, ENABLE);
    BSP_IntVectSet(BSP_INT_ID_UART1_T,UART1_TX_hdl);
    
    #else
    UART1_Init((uint32_t)115200, UART1_WORDLENGTH_8D, UART1_STOPBITS_1, UART1_PARITY_NO,
                UART1_SYNCMODE_CLOCK_DISABLE, UART1_MODE_TXRX_ENABLE);
    
    /* Enable UART1 Transmit interrupt*/
    

    // UART1_ITConfig(UART1_IT_RXNE, ENABLE);
    UART1_ITConfig(UART1_IT_RXNE_OR, ENABLE);
    BSP_IntVectSet(BSP_INT_ID_UART1_R,UART1_RX_hdl);

    #endif
    
    enableInterrupts();
    

    }

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥15 matlab实现基于主成分变换的图像融合。
  • ¥15 对于相关问题的求解与代码
  • ¥15 ubuntu子系统密码忘记
  • ¥15 信号傅里叶变换在matlab上遇到的小问题请求帮助
  • ¥15 保护模式-系统加载-段寄存器
  • ¥15 电脑桌面设定一个区域禁止鼠标操作
  • ¥15 求NPF226060磁芯的详细资料
  • ¥15 使用R语言marginaleffects包进行边际效应图绘制
  • ¥20 usb设备兼容性问题
  • ¥15 错误(10048): “调用exui内部功能”库命令的参数“参数4”不能接受空数据。怎么解决啊