历史上的今天
返回首页

历史上的今天

今天是:2025年02月18日(星期二)

正在发生

2020年02月18日 | stm8s 开发SPI的两种方法

2020-02-18 来源:eefocus

1: void GPIO_Configuration(void)


Add  GPIOA configuration


void GPIO_Configuration(void)


{   


  GPIO_DeInit(GPIOD);


  /* Configure PD0 (LED1) as output push-pull low (led switched on) */


  GPIO_Init(GPIOD, GPIO_PIN_0, GPIO_MODE_OUT_PP_LOW_FAST);


  /* GPIOD reset */


  GPIO_DeInit(GPIOC);


  /* Configure PD0 (LED1) as output push-pull low (led switched on) */


  GPIO_Init(GPIOC, GPIO_PIN_5 , GPIO_MODE_OUT_PP_HIGH_SLOW);


  GPIO_Init(GPIOC, GPIO_PIN_6, GPIO_MODE_OUT_PP_HIGH_SLOW);


  GPIO_Init(GPIOC, GPIO_PIN_4, GPIO_MODE_OUT_PP_LOW_FAST);}


2: void HC595SendData(u8 SendData)


  send data to HC595 Using GPIOA+SPI


  GPIOC.6---- SER


  GPIOC.5---- SCLK


  GPIOC.4---- RCLK


void HC595SendData(u8 SendData)



#if Comm_MODE


  while (SPI_GetFlagStatus( SPI_FLAG_TXE) == RESET);


  SPI_SendData(SendData);


  while (SPI_GetFlagStatus(SPI_FLAG_RXNE) == RESET);


  SPI_ReceiveData(); /*读取因上面发送数据产生的无效数据*/


#else


  // 寄存器(可赋值):不优化290KHz,最高速度优化:319KHz


   u8 i;   


   for(i=0; i<8; i++)


   {


        if(SendData<ODR |= GPIO_PIN_6; //SER


        else                   GPIOC->ODR &=~GPIO_PIN_6;


  

        GPIOC->ODR |= GPIO_PIN_5; //SCLK


        GPIOC->ODR &=~GPIO_PIN_5;  


    }


   #endif


}


3: void sdata(void)


   Send 8 byte data to HC595


void sdata(void)


 {


    HC595SendData(segbit[m]);


    HC595SendData(fseg[disbuf[m]]);


    GPIOC->ODR |= GPIO_PIN_4; //RCLK


    GPIOC->ODR &=~GPIO_PIN_4;


    m++;


    if(m==8)


    {


      m=0;


    }


 }


**


1.declare m as globe variable


unsigned char m;


#define Comm_MODE        1/0


2.declare segbit , fseg and disbuf variable


  U8  fseg[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};


unsigned char  segbit[]={0x80,0x40,0x20,0x10,0x08,0x04,0x02,0x01};


unsigned char  disbuf[8]={0,0,0,0,0,0,0,0};


3.should include the head file


   #include "stm8s_spi.h"

上一篇:【STM8】SPI通讯

下一篇:stm8 硬件SPI

推荐阅读

史海拾趣

上海晶岳(AFSEMI)公司的发展小趣事

随着市场的不断变化和技术的不断进步,晶岳电子意识到单一的产品线已无法满足市场需求。于是,在2012年,公司开始拓展产品线,研发并推出了LDO、DCDC、复位IC等电源管理芯片。这一举措不仅丰富了公司的产品线,也进一步提升了公司在电源管理领域的竞争力。同时,晶岳电子还加大了对研发团队的投入,引进了一批具有丰富经验的研发人员,为公司的技术创新提供了有力保障。

ACCRETECH公司的发展小趣事

随着移动互联网的快速发展,晶岳电子敏锐地捕捉到了移动终端支付芯片市场的潜力。2016年,公司推出了具有自主知识产权的移动终端支付芯片,以及过压保护芯片和充电管理IC系列产品。这一创新举措不仅使晶岳电子成功拓展了新的市场领域,也进一步提升了公司在行业内的知名度和影响力。同时,公司还加强了与移动支付平台的合作,共同推动移动支付技术的发展和应用。

Crystal Clear Technology公司的发展小趣事

Crystal Clear Technology自创立之初,便专注于研发新型显示技术。面对市场上日益增长的高清显示需求,公司投入大量资源进行技术研发,成功推出了一款具有高清晰度和广视角的显示屏产品。这一创新产品迅速获得市场认可,为Crystal Clear Technology打开了新的销售渠道,并奠定了公司在行业内的技术领先地位。

Cyrix Corp公司的发展小趣事

在成功推出数学协处理器后,Cyrix于1992年推出了其第一款CPU——486SLC和486DLC。这两款产品旨在与英特尔的486SX和486DX竞争,并因其引脚兼容性和低廉的价格而广受制造商欢迎。尽管其性能略逊于英特尔的同类产品,但Cyrix凭借价格优势在市场上占据了一席之地。

Akros[台湾超硕股份有限公司]公司的发展小趣事

随着电子行业的快速发展,Akros公司意识到技术创新的重要性。公司加大了对研发的投入,成功开发出了一系列具有高性能和稳定性的电子产品。这些产品不仅满足了市场的多样化需求,还赢得了客户的广泛认可。通过技术的不断创新和产品的不断优化,Akros逐渐在行业中树立了良好的口碑。

CBM_America_Corporation公司的发展小趣事

在全球电子行业遭遇供应链危机时,CBM_America_Corporation面临着巨大的挑战。公司的原材料采购受到影响,生产成本大幅上升。为了应对这一危机,CBM积极调整采购策略,寻找新的供应商和合作伙伴。同时,公司还加大了研发投入,开发出了更加环保、节能的产品,以适应市场需求的变化。通过一系列措施的实施,CBM成功度过了危机,并保持了稳定的发展态势。

问答坊 | AI 解惑

电子万年历我成功调试过

http://blog.163.com/li_j920/edit/ 还的硬件电路,你们要我会给你们的。…

查看全部问答>

求助IIC总线

在网上看了IIC总线的资料但是还是不懂如何用C语言写个程序出来,看了人家的程序也不懂,请哪些高手帮助我下解释程序的含义,或者进一步讲解下思路。 我看了下资料,不知道这样可以实现IIC总线的启停吗? #include <reg51.h>#include \"intrin ...…

查看全部问答>

WinCE中如何调用ARM汇编指令?

RT,我在做GBA模拟器,想直接调用ARM汇编指令,利用ARM9模拟ARM7-TDMI,但是如果可以直接调用ARM汇编指令模拟就很简单了,请问需要什么平台和设备?因为主要是在Windows Mobile上面用,所以希望能简单一点的…

查看全部问答>

请教 关于上层过滤器驱动程序的问题

请问如何在上层过滤驱动实现指定的IRP拦截,比如,禁止C:\\helloworld.exe以外的一切程序写G:\\盘? 我现在用DriverStudio生成了一个upper filter,那么应该如何修改代码呢?…

查看全部问答>

想找个师傅带一下【上海,武汉均可】

要毕业了没有工作经验,想找一个师傅教一下。毕业课题是无线点菜机,辅导我做一下。…

查看全部问答>

ARM的IO脚为什么不像51那样可以直接操作

arm是先要打开指定的IO口才可以读写,感觉不如51的方便arm的IO脚为什么不像51那样可以直接操作?这样有什么好处?…

查看全部问答>

GBT 20234-2006电动汽车传导充电用插头、插座、车辆耦合器和车辆插孔通用要求

GBT 20234-2006电动汽车传导充电用插头、插座、车辆耦合器和车辆插孔通用要求…

查看全部问答>

zigbeePro实际最多能接多少个节点?

zigbeePro实际最多能接多少个节点?想将一个网络的节点数布置为1000个,分5个楼层,不知延时会有多少?…

查看全部问答>