STM8S时钟和串口初始化问题

问题描述

STM8S时钟和串口初始化问题

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

解决方案

我使用的是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();

}

时间: 2024-10-27 19:04:14

STM8S时钟和串口初始化问题的相关文章

linux一段串口初始化的程序请大神解释

问题描述 linux一段串口初始化的程序请大神解释 //初始化串口 #ifdef linux memset(tmp,0,128); if (commtype==0) sprintf(tmp, "stty </dev/%s%d clocal cread -icanon -echo -echoe -opost -istrip min 0 time 5",DEVNAME,TCP_IP_Start - ProjectNo + SER_Start);//,1200 , "even

串口初始化中CSIZE是什么意思

问题描述 串口初始化中CSIZE是什么意思 在进行出口初始化时,对数据位设定时,用了这样的语句 struct termios opt; opt.c_cflag &= ~CSIZE; opt.c_cflag |= CS8; 在设置数据位为8时为什么要用opt.c_cflag &= ~CSIZE;这条语句?求大神指点. 解决方案 //先屏蔽其他标志 Opt.c_cflag&=~CSIZE; //紧接着将数据位修改为8bit Opt.c_cflag |=CS8; 解决方案二: 先屏蔽其他

凌阳单片机-spce061aUART串口初始化程序

问题描述 spce061aUART串口初始化程序 有没有人用的凌阳单片机啊,求一份UART初始化的程序,我用的领养单片机控制GPRS发短信,但短信老是发不出去,我想着可能是串口初始化失败了,有木有人有程序啊 解决方案 http://wenku.baidu.com/link?url=p3800Rwxmuty0xvxrKmV1wxMxKGqxKUKK-ijx6G3fo6oerk_diCzlVFxNhQssHKkgbmTeiMkNlcnGc0rIonMaj-wKCXS5D9wJN94XmQdw3a h

linux 串口驱动(二)初始化 【转】

转自:http://blog.chinaunix.net/uid-27717694-id-3493611.html 8250串口的初始化: (1)定义uart_driver.uart_ops.uart_port等结构体的实例并在适当的地方更具具体的硬件驱动情况初始化他们,当然具体设备xxx的驱动可以将这些结构体套在新定义的xxx_uart_driver.xxx_uart_ops.xxx_uart_port之内. (2)在模块初始化调用uart_register()和uart_add_one_po

LPC1768之串口UART0

*********************************************************************************************************/ #include "LPC17xx.h" /* LPC17xx外设寄存器 */ /*************************************************************************************************

VS 串口数据发送不到下位机

问题描述 VS 串口数据发送不到下位机 #ifndef SERIALPORT_H_ #define SERIALPORT_H_ #include #include #include #include #include #include /** 串口通信类 本类实现了对串口的基本操作 例如监听发到指定串口的数据.发送指定数据到串口 */ class CSerialPort // (int * pData) { public: CSerialPort(void); ~CSerialPort(void

串口通信-c8051f020的12位AD采样

问题描述 c8051f020的12位AD采样 /******************************************************************************* 程序测量电压在外部ADC输入和打印 / /结果通过UART终端窗口. / /系统时钟使用内部24.5 mhz振荡器成倍增加 / / 49 mhz的芯片上的锁相环.结果输出到UART的循环 / /设定的速度基于定时器2的延迟.这个循环定期读取 / / ADC值从一个全局变量,结果. / / A

串口显示乱码的原因有哪些?

  在通信波特率为 38400 时,通信正常,arm 板上解受到的数据(ascII码)显示正常. 但是当波特率为 115200 时,解受到的数据就出现乱码的现象! 用ARM2103 给电脑发送信息,用串口高度精灵看,一直接收的都是错误码. 波特率 换了好几档 比如9600 4800 2400 1200(我用的晶振是 11M多点的那个) 等都试过 都是乱码 区别是一个乱码来得快 一个乱码来得慢 串口线 23 脚短接能正常的自收自发 下载到单片机的程序也没啥问题. 真的不知道,原因出现在哪里! 1.

C#结合串口通信类实现串口通信源代码

mycom是串口通信类.下面是串口通讯测试程序的源代码,将mycom类放在此项目中,可以实现简单的串口通信,希望读者能通过这个程序对串口通信过程有一个初步的了解: using System; using System.Drawing; using System.Collections; using System.ComponentModel; using System.Windows.Forms; using System.Data; using System.Threading; namesp