clock-请大神看一下我的代码还缺什么文件,该怎么改啊

问题描述

请大神看一下我的代码还缺什么文件,该怎么改啊

#include"stm8s.h"
#include"stm8s_UART1.h"
#include"stm8s_clk.h"
#include"stm8s_conf.h"
#include"iostm8s003k3.h"

typedef unsigned char uint8;
typedef unsigned char uint16;

uint8 num=0;

/************************************************************************/

  • 功能:时钟配置初始化
  • 形参:无
  • 返回:无

    /************************************************************************/

    void CLK_Init(void)
    {

    /*对于内部高速时钟HSI[16MHz],其逻辑关系是HSI---[HSIDIV分频]---[时钟选择门]---

    • 主时钟Fmaster---{[CPUDIV分频]---Fcpu时钟;其他外设时钟}
      */

      CLK_ICKR = 0x01; //Internal clock control register。复位值,使能HSI时钟,快速唤醒禁止

      CLK_ECKR = 0x00; //External clock control register。HSE禁止。

      CLK_SWR = 0xE1; //Clock master switch register。选择HSI为主时钟。

      CLK_SWCR = 0x00; //Clock switch control register。时钟切换,中文数据手册翻译似乎有误

      /*Clock divider register。分频Fmaster和Fcpu。

    • 默认是8和1,现在是2和1,因此Fmaster=8M,Fcpu=8M */

      CLK_CKDIVR = 0x08;

      CLK_PCKENR1 = 0xFF; //Peripheral clock gating register 1。Fmaster与外设时钟连接

      CLK_PCKENR2 = 0x0; //同上

      CLK_CSSR = 0x0; //Clock security system register。时钟安全检测关

      CLK_CCOR = 0x0; //Configurable clock control register。时钟输出关闭

      }

    //****************************************/

    // 函数名称:Init_Uart1

    // 函数功能:串口寄存器初始化

    // 入口参数:波特率值

    // 出口参数:无

    // 返 回 值:无

    //***************************************/

    void Uart1_Init(uint16 Tcon)

    {
    uint8 Tmp1 = 0 ;

    uint8 Tmp2 = 0 ;

    //禁止UART发送和接收

    UART1_CR2 =0 ;

    //M=0 8个数据位 b2=0,禁止校验 b5=0,UART使能

    UART1_CR1 = 0 ;

    UART1_CR3 = 0 ; // b5 b4 = 00 ,一个停止位

    //波特率设置,先写UART_BRR2 再写UART_BRR1

    // F = 9600, 分频为:16M/9600 = 1666.7 -> 0X0683

    Tmp1 = (uint8)((Tcon >> 4) & 0x00ff) ;

    Tmp2 = (uint8)((Tcon & 0x000f)|((Tcon >> 8) & 0x00f0));

    UART1_BRR2 = Tmp2;

    UART1_BRR1 = Tmp1 ;

    //允许发送 允许接收 接收中断使能

    × UART1_CR2 |= (REN | TEN | RIEN);

    }

    main()
    {
    CLK_Init();
    · UART1_init();
    while(1);

    }

    //***************************************/
    // 函数名称:UartSendByte

    // 函数功能:串口发送一字节数据

    // 入口参数:要发送的数据

    // 出口参数:无

    // 返 回 值:无

    //***************************************/
    void UartSendByte(uint8 num)
    {
    × while(!(UART1_SR & TXE));//发送数据寄存器为非空 等待 .
    UART1_DR =num ;
    }

    //*************************************************************/

    // 函数名称:Uart1ReceByte

    // 函数功能:串口接收一字节数据

    // 入口参数:无

    // 出口参数:接收到的数据

    // 返 回 值:返回是否接收到数据 接收到数据返回1,未接到返回0

    //*************************************************************/
    void Uart1ReceByte(uint8 num)
    {
    × if((UART1_SR & RXNE) != 0);//读数据寄存器为非空 说明有数据进来

    {

    × UART1_SR &= ~RXNE ;

    num = UART1_DR ;
    num++;
    UART1_DR =num ;
    × REN=0;
    }

    }

(×:表示有错的地方; · :表示警告)

编译结果:

Building configuration: mbv - Debug
Updating build tree...
main.c

Warning[Pe009]: nested comment is not allowed I:我的项目项目1项目内容MBVmain.c 17

Error[Pe020]: identifier "REN" is undefined I:我的项目项目1项目内容MBVmain.c 65

Error[Pe020]: identifier "TEN" is undefined I:我的项目项目1项目内容MBVmain.c 65

Error[Pe020]: identifier "RIEN" is undefined I:我的项目项目1项目内容MBVmain.c 65

Warning[Pe223]: function "UART1_init" declared implicitly I:我的项目项目1项目内容MBVmain.c 72

Error[Pe020]: identifier "TXE" is undefined I:我的项目项目1项目内容MBVmain.c 87

Error[Pe020]: identifier "RXNE" is undefined I:我的项目项目1项目内容MBVmain.c 100

Error[Pe020]: identifier "RXNE" is undefined I:我的项目项目1项目内容MBVmain.c 102

Error[Pe020]: identifier "REN" is undefined I:我的项目项目1项目内容MBVmain.c 106

Error while running C/C++ Compiler

Total number of errors: 8
Total number of warnings: 2

解决方案

main.c文件的第65行用到的REN在哪里定义的?还有TEN等好多定义都找不到

解决方案二:

这是单片机的C语言,要根据手册来对照才知道需要哪些头文件。

解决方案三:

找不到定义的类型,先找它的头文件,然后include

时间: 2024-12-11 08:45:02

clock-请大神看一下我的代码还缺什么文件,该怎么改啊的相关文章

java-本人新手求教 关于Java内部类的问题 请大神看图

问题描述 本人新手求教 关于Java内部类的问题 请大神看图 解决方案 就是将 entry 这个对象 加入到 entrys这个数组中去 , 每次夹的时候 都会 count 加1 解决方案二: 这个呢也不是内部类的问题,,就是entrys数组中放入entry对象,,count++就是count先赋值再自增 解决方案三: 将实例entry赋值给entry数组.具体不知道你具体想问什么? 解决方案四: 这个不是内部类的问题,是在一个类中定义了方法,然后把entry 的值赋给entrys 数组j进行前+

C语言 计算器问题(请大神看一下)

问题描述 C语言 计算器问题(请大神看一下) 123+213-67*34+345/23*45*(34+34-345+245+567)=359 183 可我的程序等于-363067 代码如下 #include#include#include#define MAXZISE 1000struct oper{ char name; int priority; int opnum;};typedef struct oper OPERATOR;OPERATOR opStack[MAXZISE];int OT

sql语句报错,请大神看下哪里的错误

问题描述 sql语句报错,请大神看下哪里的错误 错误代码: 1064 You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'USING BTREE ) ENGINE=INNODB AUTO_INCREMENT=11 DEFAULT CHARSET=utf8' at line 15 C

spring-tomcat报错,请大神看一下是哪里的问题!!

问题描述 tomcat报错,请大神看一下是哪里的问题!! 严重: Exception sending context initialized event to listener instance of class org.springframework.web.context.ContextLoaderListener org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'h

xml-XML文件问题,请大神看下并帮忙解释下,感激不尽

问题描述 XML文件问题,请大神看下并帮忙解释下,感激不尽 XML文件问题,下边两段bean代码,我新手不理解,请大神看下并帮忙解释下,感激不尽 <bean id="dingDanDengJiDao" class="com.sysgrrj.module.DingDanDengJi.dao.DingDanDengJiDao"> <property name="sessionFactory"> <ref bean=&qu

xml-XSLT 实现字符串的连接,请大神看下

问题描述 XSLT 实现字符串的连接,请大神看下 <data> <field name='id'>123</field> <field name='id'>abc</field> </data> <data> <field name='id'>123|abc</field> </data> 需求:就是把相同节点,相同属性的值,连接成一个字符串,并用|分隔符隔开. 解决方案 <?xm

请大神看一下,我的枚举用错了吗?

问题描述 请大神看一下,我的枚举用错了吗? 解决方案 你这里tag是枚举类型名,不是变量. 不能有tag=L; 解决方案二: 定义枚举变量: enum tag{L,R}t1; tag t2; t1=L; t2=R; 解决方案三: tag是用来定义变量的,不是变量 解决方案四: tag是自己定义的枚举类型名,不能对其赋值,可以等同于int等类型,但可以对他声明的变量赋值,如tag var = L:类似于int i= 0:

烦请大神将下面的js代码改写为php代码(加密用)

问题描述 烦请大神将下面的js代码改写为php代码(加密用) function md5(A) { return hex_md5(A) } function md5js(pass, code, uin) { var I = hexchar2bin(md5(pass)); var H = md5(I + uin); var G = md5(H + code.toUpperCase()); return G } var hexcase = 1; var b64pad = ""; var ch

gsm-mini2440通过串口控制gms发送短信,请大神帮忙看看是我代码有问题还是什么其他原因,总是不成功

问题描述 mini2440通过串口控制gms发送短信,请大神帮忙看看是我代码有问题还是什么其他原因,总是不成功 #include #include #include #include #include void delay() { int i,j; for(i=0;i for(j=0;j } int main() { int fd ; char* string1="AT+CMGF=1r"; char* string2="AT+CSCS='GSM'r"; char*