飞思卡尔MC9S12G64串口发送接收驱动

发布者:蓝天飞行最新更新时间:2021-07-22 来源: eefocus关键字:飞思卡尔  串口发送 手机看文章 扫描二维码
随时随地手机看文章

因为之前刚入职,对串口调试不了解,下面整理一下书上的串口程序。  移植性还比较强


使用说明:MC9S12系列的串口有两种查询方式


               1》使用中断方式查询


               2》在主函数中使用轮询的方式的方法进行查询


             这两种方法在下面函数中都有体现,需要在用的时候注意分别提取


             主要是初始化的SCI1CR2的寄存器配置和调用中断的时候,注意串口1的中断号是VectorNumber_Vsci1     21


                                                                                                            注意串口0的中断号是VectorNumber_Vsci0    20


 


            下面是放到主函数中采用轮询方式时调用的函数


 /*************************串口轮询方式检测*********************************************************************************/        

 #if 0    

       if(SCI1SR1_RDRF) 

       {

        JieSHOU_Ddate[i]=SCI1DRL;

        i++;

        if(i==12) 

        {

         i=0;

         JieSHOU_flag=1;    //接收够12 个数组数据

        }

       }

                                                                        

      //MFD_Printf("JieSHOU_Ddate  %d!!rn",JieSHOU_Ddate[i]);

 #endif 


*************************************************************************************************************************************************


下面是原版函数,具体使用可根据自己需求改动!


********


 


/*---- include ---------------------------------------*/

#include  Printf.h"

#include   

#include

/*---- config-----------------------------------------*/

#if MFD_DBGUG

const char Hex[] = "0123456789ABCDEF";

unsigned int JieSHOU_Ddate[12];



char ASCALL_TO16[4];

int i=0;

char JieSHOU_flag;

unsigned int JieSHOU(); 

/*----------------------------------------------------*/

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

* 函数名:void USART_Init(void)

* 创建:ZXL

* 功能:串口初始化

* 版本:1.0.0

* 日期:2019年1月17日

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

void USART_Init(void)

{

/*********只发配置************************/

#if 0

    SCI1BD = 14;        //波特率115200

    SCI1CR1 = 0x00;        //模式配置 数据位:8 校验位:无 停止位:1

    SCI1CR2 = 0x08;        //发送接收配置

#endif


#if 1

/*********接收中断方式*******************/     

  SCI1BD = 14;        //波特率115200

    SCI1CR1 = 0x00;        //模式配置 数据位:8 校验位:无 停止位:1

    SCI1CR2 = 0x2c;        //发送接收配置,,接收使能、、接收器满中断使能

#endif                       // SCI1CR2_ILIE=1;线路空闲使能

/*********接收查询方式*******************/     


#if 0                 

    SCI1BD = 14;        //波特率115200

    SCI1CR1 = 0x00;        //模式配置 数据位:8 校验位:无 停止位:1

    SCI1CR2 = 0x0c;        //发送接收配置,,接收使能、、接收器满中断使能     

#endif                  

}


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

* 函数名:void USART_SendByte(uint16_t Data)

* 创建:ZXL

* 功能:串口发送函数

* 版本:1.0.0

* 日期:2019年1月2日

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

static void USART_SendByte(uint16_t Data)

{

    SCI1DRL = Data;

    while(!SCI1SR1_TC)

    {

        ;

    }

}


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

* 函数名:void DoPrint( const char *fmt, va_list ap ) //va_list  char

* 创建:ZXL

* 功能:执行打印函数

* 版本:1.0.0

* 日期:2019年1月2日

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

static void DoPrint( const char *fmt, va_list ap )

{

    char ch;

    char *ptr;

    int value;

    uint8_t fl_zero;

    uint32_t i, fl_len, cnt, mask = 1;

    


    while(1)

    {

    

        switch(ch = *fmt++)

        {

            case 0:

                return;

            case '%':

                if( *fmt != '%' )

                {

                    break;

                }

                else

                {

                }

                fmt++;

            default:

                USART_SendByte(ch);

                continue;

        }

        fl_zero = 0;

        cnt = 0;

        ch = *fmt++;

        if(ch == '0')

        {

            fl_zero = 1;

            ch = *fmt++;

            cnt = ch - '0';

            ch = *fmt++;

        }

        else if( (ch >= '0') && (ch <= '9'))

        {

            cnt = ch - '0';

            ch = *fmt++;

        }

        else

        {

        }

        fl_len = 4;

        switch(ch)

        {

            case 'l':

            case 'L':

                ch = *fmt++;

                fl_len = 4;

                break;

            case 'b':

            case 'B':

                ch = *fmt++;

                fl_len = 1;

                break;

            default:

                break;

        }

        switch(ch)

        {

            case 'd':

            case 'u':

                switch(fl_len)

                {

                    case 1:

                        if(ch == 'd')

                        {

                            value = (char)va_arg(ap, int);

                        }

                        else

                        {

                            value = (uint8_t)va_arg(ap, int);

                        }

                        break;

                    case 4:

                        if(ch == 'd')

                        {

                            value = (uint32_t)va_arg(ap, uint32_t);

                        }

                        else

                        {

                            value = (uint32_t)va_arg(ap, uint32_t);

                        }

                        break;

                    default:

                        break;

                } 

                if(value < 0)

                {

                    USART_SendByte('-');

                    value = value*(-1);

[1] [2] [3]
关键字:飞思卡尔  串口发送 引用地址:飞思卡尔MC9S12G64串口发送接收驱动

上一篇:freescale MC9S12G128 SCI,printf使用
下一篇:MC9S12G128 PLL设置

推荐阅读最新更新时间:2024-11-04 15:50

element14 引进飞思卡尔Xtrinsic智能传感器
    e络盟(前身为派睿电子)及其母公司element14日前宣布,通过引进全球传感技术领导厂商飞思卡尔(freescale)公司的尖端Xtrinsic传感器解决方案,扩大了其13万种产品库存量。     传感技术产业现在是发展迅速的半导体产业之一。美国咨询公司Gartner预测全球非光学传感器销售额将会在2014年增长到约50亿美元,对亚太区工程师来说,传感器需求激增也引发了对先进传感器解决方案日益增长的需求,以便发挥传感器在不同行业应用的领先性能。 “传感器已成为多种电子类产品(包括智能手机和医疗设备)技术革新的主要动力。element14明白工程师们正不断地受到挑战,以找到更为智能的传感器部件来支持已有的尖端设备和应用程
[工业控制]
Freescale扩展嵌入式电机控制系列提供经济高效的
Freescale扩展嵌入式电机控制系列提供经济高效的8位MCU 通过推出S08MP16,飞思卡尔半导体公司正在扩展其嵌入式电机控制系列。这种入门级8位微控制器 (MCU) 系列为从工业驱动到汽车电子燃油泵等无刷直流(BLDC)电机控制应用提供了一种安全、精确且成本优化的解决方案。 BLDC 电机在消费电子、工业和汽车电子方面日益流行,因为它们比传统的有刷直流和电磁感应电机提供效率和可靠性方面的优点。这种S08MP16 微控制器经过优化,满足这一快速发展的电机细分市场的需求,并且也能够支持其他的电机类型,包括交流电磁感应电机。 安全和可靠的控制 通过实现快速而精确的电机关闭,多种高速模拟比较器及强大的 8通道Flex
[模拟电子]
基于51单片机的串口中断发送数据帧
很少看到有资料写如何以中断的方式发送一帧数据,如果以等待的发送数据帧,对高速运行的单片机来说是很浪费时间的,下面就介绍一种使用中断方式发送数据帧,操作平台采用51 mcu 首先定义一个数据帧的结构体,该结构体可以做为一个全局变量,所有的发送都要经过这个结构体: //结构体 struct { char busy_falg;//忙标志,若在发送数据时置位1,即在开始发送置位1,发送结束置位0 int index;//索引,指向需要发送数组的位置 int length;//整个数据帧的长度 char *buf;//指向需要发送的数据帧,建议为全局变量,否则一旦开始发送,必须等到发送结束,即判断busy_falg为0
[单片机]
基于51单片机的<font color='red'>串口</font>中断<font color='red'>发送</font>数据帧
飞思卡尔预启动家庭健康中心平台
  随着医疗传感器监测着人与环境的激增,飞思卡尔半导体公司的目标是重建他们,通过家庭健康中心(HHH)参考设计,处理所有流行的有线和无线的协议 - 由云计算机连接到家庭保健的一种普遍的路由器。   飞思卡尔在国际医院及医疗设备用品展览会会议上(德国杜塞尔多夫,2011年11月16-19日)将介绍它的HHH如何整合WiFi,以太网,USB,蓝牙,ZigBee路由器连接成一个单一的医疗传感器(输入)、平板显示器(输出),连接到在云中的医疗分析(加工)和医生在线建议上。   HHH聚合医疗监测设备 - 如血压计,血液中血糖仪,体重秤,脉搏血氧仪为的云计算机,可以存储的数据向医生展示,以及运行分析结果直接在他们的平板显示,如建议注
[医疗电子]
汽车MCU率先成为荣获ISO 26262功能安全标准认证
思卡尔半导体(NYSE:FSL)正致力于帮助汽车电子器件供应商更轻松地开发符合国际标准化组织(ISO)26262标准的功能安全系统。飞思卡尔日前宣布其Qorivva MPC5643L 32位微控制器(MCU)通过了独立的权威认证机构exida的认证,成为业界首个获得该认证的半导体产品。   Qorivva MPC5643L 32位MCU基于Power Architecture技术,专为要求汽车安全完整性等级较高的一系列广泛汽车应用而设计,包括电动助力转向、主动悬挂、防抱死制动系统和基于雷达的高级驾驶辅助系统(ADAS)。它符合所有汽车安全完整性等级(ASIL),达到并满足最严格的等级ASIL D。 MPC5643L MCU
[嵌入式]
飞思卡尔运用JMP软件提升半导体良率Yield
飞思卡尔(Freescale)是全球著名的微控制器、射频半导体、模块与混合信号电路、软件技术及相关管理解决方案的供应商,其前身是拥有50多年历史的摩托罗拉半导体部门,其主要客户来自于汽车、消费电子、工业品、网络和无线应用市场的10,000多家企业。公司拥有专利5,900多项,2007年的营业收入达到57亿美元,在全球30多个国家拥有24,000多名员工,其中包括中国天津的组装测试厂和北京、上海、苏州的三个设计、研发和支持中心。六西格玛统计分析软件JMP是SAS公司的卓越绩效统计发现引擎,应用范围包括业务可视化、数据发现、六西格玛和持续改进(可视化六西格玛、质量管理、流程优化)、研发及创新、试验设计DOE等,客户遍及半导体、机
[半导体设计/制造]
<font color='red'>飞思卡尔</font>运用JMP软件提升半导体良率Yield
飞思卡尔微控制与MSCAN ----自学笔记
概述 飞思卡尔半导体是全球最大的半导体公司之一。 飞思卡尔是车用半导体微控制器(MCU)领域排名第一的供应商。 飞思卡尔在业内提供最高质量的Flash存储器。 飞思卡尔的微控制器按CPU字长分为8位、16位和32位。 飞思卡尔微控制器 飞思卡尔8位微控制器MC9S08DZ60 它在一个单芯片上提供了更多的存储器和组件。 S08DZ系列是S08D系列中的旗舰号,提供了飞思卡尔最低成本的内嵌CAN的微控制器,并且将内嵌CAN,内嵌EPROM和片上仿真/调试模式结合在一起,该单片集成了所有的功能,设计人员可以便捷地转向其设计流程。 MC9S08DZ60系列器件主要用于需要融合CAN网络和内嵌的EEPROM的应用中,它有助于帮助用
[单片机]
引领物联网革命,飞思卡尔IoTT中国之旅启航
2015年6月18日,创客们又迎来新一轮的年度盛会 为期五天的深圳首届国际创客周。 国际创客周脱胎于往年的 Maker Farie ,但是面积更大,人更多,活动更多,参展方更多。据深圳本地创业公司和孵化器方面的从业人士表示,去年展位大概有100多,今年在200以上,从A区到S区。 值得注意的是,众多国际国内知名企业微软,高通,联发科等纷纷赞助甚至是参与创客模式,试图打造企业未来新的发展模式。其中尤为引人注目的就是飞思卡尔的 Internet of Tomorrow巡展 驶向智能未来 )Avnet Day (深圳站)活动,庞大醒目,功能酷炫的飞思卡尔大篷车吸引了多达两万人参观,可以说是创客周上绝对明星了。 I
[物联网]
引领物联网革命,<font color='red'>飞思卡尔</font>IoTT中国之旅启航
小广播
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
随便看看

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved