历史上的今天
返回首页

历史上的今天

今天是:2025年01月22日(星期三)

正在发生

2020年01月22日 | IAR 开发STM8 学习

2020-01-22 来源:eefocus

刚刚接触STM8单片机,之前一直在Linux下开发,一时有点懵逼了,于是把自己的一些学习过程记录下来,希望对与像我这样的门外汉有所帮助。


1、安装IAR软件: 百度一下,一大堆的安装教程, 我安装了2.0以上的版本,需要license,我用注册机生成的注册码填进去,一直提示注册码无效, 没办法使用,最后只能安装 1.42版本的IAR,(安装时记得安装ST-LINK驱动);

2、在IAR中创新工程:project->create new project  然后选择模板, 我选择的是C模板,点击OK, 就会生成一个main.c文件及main函数;

3、把库文件拷贝到工程目录下,(这里我拷贝Libraries 、 Utilities)

4、配置工程信息:


鼠标放到工程名上,点击右键弹出如下:

点击Options...,弹出如下配置界面:

5、以下简单的说明一下一些配置,具体的配置还是需要根据自己的实际情况来配置:


a、general option 的Library Options 中的printf 和scanf 一定要选择 small 不然代码里面使用printf函数时,编译会提示如下错误,这个错误让我郁闷里很久才找出原因:

b、C/C++ compiler 选项,选择C编译器,c99标准,preprocessor配置说明如下:

c、因为采用的是ST-LINK调试,所以debugger选项的配置如下:

其他的选项可以根据自己的需求配置,因为我的项目比价简单所以就没有配置其他选项。


程序实现串口打印:

#include "stm8l15x.h"

#include "stdio.h"

#include "stm8_eval.h"

#include "stm8l15x_beep.h"

#include "delay.h"


#ifdef _RAISONANCE_

#define PUTCHAR_PROTOTYPE int putchar (char c)

#define GETCHAR_PROTOTYPE int getchar (void)

#elif defined (_COSMIC_)

#define PUTCHAR_PROTOTYPE char putchar (char c)

#define GETCHAR_PROTOTYPE char getchar (void)

#else /* _IAR_ */

#define PUTCHAR_PROTOTYPE int putchar (int c)

#define GETCHAR_PROTOTYPE int getchar (void)

#endif /* _RAISONANCE_ */


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

  * @brief Retargets the C library printf function to the USART.

  * @param[in] c Character to send

  * @retval char Character sent

  * @par Required preconditions:

  * - None

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

PUTCHAR_PROTOTYPE

{

  /* Write a character to the USART */

  USART_SendData8(EVAL_COM1, c);

  /* Loop until the end of transmission */

  while (USART_GetFlagStatus(EVAL_COM1, USART_FLAG_TC) == RESET);


  return (c);  

}



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

  * @brief Retargets the C library scanf function to the USART.

  * @param[in] None

  * @retval char Character to Read

  * @par Required preconditions:

  * - None

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

GETCHAR_PROTOTYPE

{

  int c = 0;

  /* Loop until the Read data register flag is SET */

  while (USART_GetFlagStatus(EVAL_COM1, USART_FLAG_RXNE) == RESET);

   

  c = USART_ReceiveData8(EVAL_COM1);

  return (c);

}




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

*  name: systemClockInit

*  param:

*    int:  NULL

*    out:  NULL

*  return: NULL

*  function: config systrm clock frequency

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


void SystemClockInit(void)

{

  CLK_SYSCLKSourceSwitchCmd(ENABLE);// Select HSE as system clock source

  CLK_SYSCLKSourceConfig(CLK_SYSCLKSource_HSI);

  CLK_SYSCLKDivConfig(CLK_SYSCLKDiv_4); // system clock prescaler: 4

  while(CLK_GetSYSCLKSource() != CLK_SYSCLKSource_HSI)

  {

  }

  

}


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

*  name: UsartInit

*  param:

*    int:  NULL

*    out:  NULL

*  return: NULL

*  function: config and init uart

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

void UsartInit(void)

{

  SYSCFG_REMAPDeInit();

  SYSCFG_REMAPPinConfig(REMAP_Pin_USART1TxRxPortC, ENABLE);    

  STM_EVAL_COMInit(COM1, (uint32_t)115200, USART_WordLength_8b, USART_StopBits_1,     

                  USART_Parity_No, (USART_Mode_TypeDef)(USART_Mode_Tx | USART_Mode_Rx));

  

  enableInterrupts();

}




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

*  name: mian

*  param:

*    int:  NULL

*    out:  NULL

*  return: 0

*  function: program entry

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

int main( void )

{

  

  SystemClockInit();

  UsartInit();

  

  while(1)

  {

      printf("hello world n");

      delay_ms(500);

  }

  

}


实用ST-LINK连接板和PC机, 然后连接好串口;

到这里,一个简单的STM8单片机程序就搞定了

推荐阅读

史海拾趣

Altera (Intel)公司的发展小趣事

Altera是一家以FPGA(可编程逻辑器件)和相关技术为主的半导体公司,于1983年成立于美国加利福尼亚州的圣塔克拉拉。以下是关于Altera公司发展的五个相关故事:

  1. 成立与早期发展:Altera公司由Robert Hartmann和Michael Magranet等人创立,最初以设计和制造EEPROM(可擦除可编程只读存储器)为主。1984年,Altera推出了全球第一个可编程逻辑器件EP300系列,开创了FPGA行业。随后,Altera不断扩大产品线,致力于FPGA技术的研发和推广。

  2. FPGA技术创新:Altera在FPGA技术方面持续进行创新,推出了一系列新产品和技术。1992年,公司推出了第一个基于SRAM(静态随机存储器)的FPGA器件,从而实现了更高的速度和灵活性。随后,Altera不断改进器件结构、设计工具和软件支持,提高了产品性能和用户体验。

  3. 与竞争对手的竞争:在FPGA市场,Altera与Xilinx是两大竞争对手。两家公司在技术、产品性能、市场份额等方面展开激烈竞争。为了在市场上取得优势,Altera不断加大研发投入,推出了更具竞争力的产品,并积极开展营销和销售活动。

  4. 收购与合并:Altera在发展过程中进行了一系列收购与合并,以扩大市场份额和提升技术实力。2015年,英特尔公司以约160亿美元的价格收购了Altera,将其并入英特尔旗下,成为英特尔的子公司。这一收购使英特尔获得了Altera在FPGA领域的技术优势和市场份额,进一步巩固了英特尔在半导体行业的领先地位。

  5. 公司发展与创新:作为英特尔的子公司,Altera继续发展和创新。公司不仅致力于FPGA技术的进一步改进和推广,还在其他领域进行探索和拓展,如数据中心、人工智能、物联网等。Altera不断推出新产品和解决方案,满足不同行业和应用领域的需求,保持了在半导体行业的竞争优势。

以上是关于Altera公司发展的五个相关故事,这些故事展示了Altera从成立初期到被英特尔收购的发展历程,以及其在FPGA技术领域的技术创新、市场竞争和业务拓展等方面的重要进展。

CAMBION公司的发展小趣事

CAMBION公司自成立以来,始终将技术创新作为核心驱动力。在早期,公司研发团队成功开发了一款具有革命性的芯片技术,显著提升了电子设备的处理速度和能效。这一技术迅速在行业内引起关注,为CAMBION赢得了大量订单和合作伙伴。随着技术的不断完善和应用范围的扩大,CAMBION逐渐在电子行业中崭露头角。

ABCO公司的发展小趣事

ABCO公司深知产品质量是企业生存的根本。因此,公司建立了一套严格的质量管理体系,从原材料采购到产品生产、检测、出厂等各个环节都进行严格把控。同时,公司还注重持续改进,不断优化生产流程,提高生产效率,确保产品质量始终保持在行业前列。

B+B SmartWorx公司的发展小趣事

B+B SmartWorx一直致力于产品创新,不断推出符合市场需求的新产品。其中,光纤转换器、3G/4G无线路由器以及Wzzard系列无线感测装置等产品受到了市场的广泛认可。这些产品不仅填补了研华在某些领域的空白,也展示了B+B SmartWorx在物联网和工业网通领域的强大实力。此外,公司还积极开发风扇配件、AC插座等电力元件产品线,进一步丰富了其产品体系。

Crystal Semiconductor Corp公司的发展小趣事

随着市场竞争的加剧,Crystal Semiconductor Corp意识到只有不断创新才能在行业中立足。于是,公司加大了对研发的投入,引进了一批高端人才。经过数年的努力,公司成功开发出了一种新型的半导体制程工艺,大幅提高了晶体管的性能和可靠性。这一创新不仅为公司带来了丰厚的利润,也为整个半导体行业树立了新的标杆。

Cyrix Corp公司的发展小趣事

在被VIA收购后的一段时间里,Cyrix继续寻求市场扩张的机会。例如,在1998年,Cyrix与北京大船电子技术公司签订了总代理协议,以扩大其在中国的分销网络。这一策略帮助Cyrix进一步打开了中国市场的大门,为其在全球市场的发展奠定了基础。

以上五个故事描绘了Cyrix Corp公司在电子行业中的发展历程。从初创时期的挑战英特尔到被多次收购后的市场策略调整和市场扩张尝试,Cyrix的发展之路充满了曲折和变革。

问答坊 | AI 解惑

谈谈单片机和你的梦想

我来这里学习是为了实现我参军的梦想,我要去的地方和单片机息息相关。我要穿上那白色的制服,实现自己的价值,为理想去战斗!所以单片机就是我现在的武器,为了我梦中的战斗生活开路!…

查看全部问答>

【转】电子设计竞赛经验汇总(11楼以后更新获奖团队的成功感言)

本帖最后由 paulhyde 于 2014-9-15 03:22 编辑 竞赛时应该注意的问题: 1、软件与硬件电路最好是同时做,不要前几天都在搞软件,等到最后才来焊板,到时如果出问题都没时间改了,我参加时就是遇到了这种情况。要么也可以在面包板实践下,有人可 ...…

查看全部问答>

国产示波器的架构

输入的电压信号经耦合电路后送至前端放大器,前端放大器将信号放大,以提高示波器的灵敏度和动态范围。放大器输出的信号由取样/保持电路进行取样,并由A/D转换器数字化,经过A/D转换后,信号变成了数字形式存入内存中,微处理器对内存中的数字化信 ...…

查看全部问答>

红外遥控系统原理及单片机解码实例

本帖最后由 paulhyde 于 2014-9-15 03:23 编辑 红外解码,希望对大家有用。  …

查看全部问答>

writing_testbenches_2rd 好书分析

replyreload += \',\' + 278416;Timson,如果您要查看本帖隐藏内容请回复…

查看全部问答>

这个摄像头值300元吗?

60米红外,12MM镜头 晚上的效果 其它摄像头拍的…

查看全部问答>

我有个板子加了复位程序,搞不清楚在哪复位,帮忙分析下

EEWORLD合作qq群:49900581群主:wangkj 情况是这样的,我接上负载,他就会复位,不接负载,他就不复位,你们看,这是哪里复位呢? 我开始是怀疑电源引起的复位…

查看全部问答>

关于vhdl程序包1164的用法

问下各位:     在下面的代码中,为什么要用1164这个程序包?代码中并没有标准逻辑等数据类型啊? 谢谢.    LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL;   ENTITY control_stmts IS PORT (a, b, c: IN BOOLEAN ...…

查看全部问答>

6410 OPEN GL ES 问题

各位, 我在6410上调试三星opengl es的例子。 1.1 和2.0的  exe文件都可以正常运行,但调试三星带的源码时,初始化全部成功,但一运行到glClear(GL_COLOR_BUFFER_BIT|GL_DEPTH_BUFFER_BIT);时串口就会输出如下错误信息: Exception \' ...…

查看全部问答>

菜鸟问题:模组和解决方案有什么区别啊?

有朋友用EDGE的模组就可以做数据卡,我搞不清楚这和解决方案有什么区别。 请尽量说的详细一点。 多谢了。…

查看全部问答>