历史上的今天
返回首页

历史上的今天

今天是:2025年01月16日(星期四)

正在发生

2020年01月16日 | stm8使用atomthreads项目

2020-01-16 来源:eefocus

最近有机会使用stm8s105c6t6做开发,好久没用八位单片机做东西了,网上搜了一下stm8的相关文档发现居然有它专属的os,马上下载了一个atomthreads1.3试用,iar打开编译就出了问题:


Error[Lc036]: no block or place matches the pattern "ro code section .text in atomport-asm-iar.o" 


找过去发现是SECTION .text:code定义的问题,但是汇编定义分段用的,具体功能我也不清楚。。。。 所以我猜要修改还得查stm8的汇编指令,就一个这么小的代码找那么不值得浪费时间,所以下载了其它atomthreads编译发现有能够编译通过的,对比发现了与atomthreads1.3的不同点就在SECTION 定义,在atomthreads1.3中修改


---SECTION .text:code


+++SECTION .near_func.text:code


编译成功


但发现iar编译成功后居然不在软件中显示ram、rom的使用量


查看ports/stm8/debug目录下面的log和map文件才能看到,map里面对每个c文件占用的ram和rom都有说明。。。。。


烧录到stm8中,串口和gpiod0均会有输出并会输出semaphore的测试信息,没有错误信息标示atomthreads正常运行起来了!


一、添加中断(有两处需要修改)


1、在ports/stm8/stm8_interrupt_vector.c中


struct interrupt_vector const _vectab[] = {

{0x82, (interrupt_handler_t)_stext}, /* reset */

{0x82, NonHandledInterrupt}, /* trap  */

{0x82, NonHandledInterrupt}, /* irq0  */

{0x82, (interrupt_handler_t)AWU_IRQHandler}, /* irq1  */

{0x82, NonHandledInterrupt}, /* irq2  */

{0x82, NonHandledInterrupt}, /* irq3  */

{0x82, NonHandledInterrupt}, /* irq4  */

{0x82, NonHandledInterrupt}, /* irq5  */

{0x82, NonHandledInterrupt}, /* irq6  */

{0x82, (interrupt_handler_t)EXTI_PORTE_IRQHandler}, /* irq7  */

{0x82, NonHandledInterrupt}, /* irq8  */

{0x82, NonHandledInterrupt}, /* irq9  */

{0x82, NonHandledInterrupt}, /* irq10 */

{0x82, (interrupt_handler_t)TIM1_SystemTickISR}, /* irq11 */

{0x82, NonHandledInterrupt}, /* irq12 */

{0x82, NonHandledInterrupt}, /* irq13 */

{0x82, NonHandledInterrupt}, /* irq14 */

{0x82, (interrupt_handler_t)TIM3_UPD_OVF_BRK_IRQHandler}, /* irq15 */

{0x82, (interrupt_handler_t)TIM3_CAP_COM_IRQHandler}, /* irq16 */

{0x82, NonHandledInterrupt}, /* irq17 */

{0x82, NonHandledInterrupt}, /* irq18 */

{0x82, NonHandledInterrupt}, /* irq19 */

{0x82, NonHandledInterrupt}, /* irq20 */

{0x82, NonHandledInterrupt}, /* irq21 */

{0x82, (interrupt_handler_t)ADC1_IRQHandler}, /* irq22 */

{0x82, NonHandledInterrupt}, /* irq23 */

{0x82, NonHandledInterrupt}, /* irq24 */

{0x82, NonHandledInterrupt}, /* irq25 */

{0x82, NonHandledInterrupt}, /* irq26 */

{0x82, NonHandledInterrupt}, /* irq27 */

{0x82, NonHandledInterrupt}, /* irq28 */

{0x82, NonHandledInterrupt}, /* irq29 */

};


2、


#if defined(__IAR_SYSTEMS_ICC__)

#pragma vector = 3 //datasheet中的中断号+2

#endif

INTERRUPT void AWU_IRQHandler (void)

#if defined(__RCSTM8__)

interrupt 1 //datasheet中的中断号

#endif

{

  /* Clear AWU peripheral pending bit */

  AWU_GetFlagStatus();

}


二、驱动修改


atomthreads中的驱动很少,只有clk、gpio、itc、tim1和uart2的驱动,实在无法完成工作。我就将需要的驱动从stm8固件库拷贝过来加入工程,需要修改一下头文件,不过很简单这里就不细说了


三、总结


最后我使用了两个线程,一个运行fft,一个现实数码管,fft速度慢的可以20多毫秒才能完成一次32点的计算,其中还把sin、cos采用查表方法处理了。。。。

推荐阅读

史海拾趣

Cincon公司的发展小趣事

1991年,Cincon公司在台湾成立,标志着其在电子行业的起步。公司创立之初,便在台北设立了销售办事处,同时在彰化建立了工厂,专注于电源产品的设计与生产。创立的第二年,Cincon便开始设计和制造DC/DC转换器和电池充电器,这为其在电源行业奠定了坚实的基础。随着市场需求的不断增长,公司于1997年开始涉足交流/直流开关电源的设计与制造,进一步扩大了产品线。

上海晶丰明源(BPS)公司的发展小趣事

作为一家有社会责任感的企业,晶丰明源始终注重可持续发展。公司积极履行环保责任,采用环保材料和工艺,减少生产过程中的污染排放。同时,公司还关注员工福利和社区建设,为员工提供良好的工作环境和福利待遇,积极参与社会公益活动,为社区的和谐发展做出了贡献。

这五个故事从不同角度展现了上海晶丰明源(BPS)公司在电子行业中的发展历程和成就。从创立到上市、从技术突破到市场拓展、从应对挑战到履行社会责任,晶丰明源始终坚持以市场为导向、以技术为核心的发展理念,不断追求卓越和创新,为电子行业的发展做出了重要贡献。

Engineered Components Co公司的发展小趣事

随着市场竞争的加剧,ECC意识到只有不断创新才能保持领先地位。因此,公司加大了对研发的投入,引进了一批先进的研发设备和人才。经过数年的努力,ECC成功研发出了具有更高精度、更好性能的电子连接器,并推出了一系列新型电子元件。这些新产品不仅满足了客户日益增长的需求,还为公司带来了更多的市场份额。

Hongfa公司的发展小趣事

为了推动公司的进一步发展,宏发公司于2008年进行了股份制改造,并成立了“厦门宏发电声股份有限公司”。2012年,公司成功上市,通过资本市场获得了更多的资金支持和发展动力。上市后,宏发继续加大在技术研发、市场拓展和产能提升等方面的投入,不断巩固和扩大其在继电器行业的领先地位。同时,公司还积极履行社会责任,为行业发展和地方经济做出了积极贡献。

Gennum ( Semtech )公司的发展小趣事
作为输出设备,用于显示电路的工作状态。
Boundary Devices公司的发展小趣事

近年来,电子行业面临着诸多变革和挑战,如物联网的快速发展、人工智能的崛起等。面对这些变革,Boundary Devices积极调整战略,加强在物联网和人工智能领域的研发投入,推出了一系列符合市场趋势的新产品。同时,公司还加强与高校和研究机构的合作,共同推动电子行业的创新与发展。

问答坊 | AI 解惑

整体成本与复杂度

在电子产品从开发、运行到售后服务和维护这个完整的生命周期之中,设备软件已经成为电子产品制造商获得产品差别化竞争优势的关键因素,降低设备软件的成本与复杂度是其中最大的挑战。为了应对这个挑战,电子设备制造商需要进行一场现代化的变革,改 ...…

查看全部问答>

四川省大学生电子设计竞赛西南科技大学赛区竞赛题目-电子广告牌

本帖最后由 paulhyde 于 2014-9-15 09:27 编辑 电子竞赛题目-电子广告牌 一、电子竞赛题目任务: 设计并制作一台简易电子广告牌,16*32点阵显示,示意图如下: 二、电子竞赛题目要求: 1、基本要求: 1) 能通过按键翻页显示数字和字母。 ...…

查看全部问答>

推荐一个理论与实践结合的好网站

推荐一个不错的网站:矿石收音机论坛 http://www.crystalradio.cn/bbs/论坛里有许多板块,有许多引人入胜的好文章 [ 本帖最后由 quanzx 于 2009-7-18 15:47 编辑 ]…

查看全部问答>

和大家一起分享CS5532的经典程序

和大家一起分享CS5532的经典程序…

查看全部问答>

小偷也有暗号,你知道么?

看完后一身冷汗 晕 $(\'swf_EZ5\').innerHTML=AC_FL_RunContent(\'width\', \'550\', \'height\', \'400\', \'allowNetworking\', \'internal\', \'allowScriptAccess\', \'never\', \'src\', encodeURI(\'http://player.ku6.com/refer/eXHKgUIamK ...…

查看全部问答>

不会的,就不要写进简历里面

这几天面试了很多人,感觉比从前几年面试过的都多。 发现一个普遍的现象,就是有点儿印象的,简历里写“熟悉”,用过一些的,简历里写“精通”。 以今天的一个为例: 简历里写着,熟悉ARM内核,Linux下字符设备、块设备和网络设备的驱动。 我问 ...…

查看全部问答>

新人报道

菜鸟刚刚接触单片机 正在学习C51编程 有一点C++的基础 想问下各位大大 网上有C51的编程实例么 还有 是不是proteus 和keil51两个软件就够了 以后有什么问题还麻烦各位大大了…

查看全部问答>

VXWORK资料 需要的可以下载

1.嵌入式操作系统VxWorks简介 2.VXWORKS内核分析 3.VxWorks及其选件介绍 4.VxWorks使用说明书 (1) 5. VxWorks使用说明书 (2) 6.基于VxWorks的BSP概念与开发 7. VxWorks操作系统指南__任务管理 8. VxWorks中的多任务通讯机制 9. VxWorks ...…

查看全部问答>

WINCE5.0下用KITL调试网卡驱动,MmmapIOspace函数问题

PHYSICAL_ADDRESS phyAddr;        phyAddr.QuadPart=pAdapter->m_ulIOBaseAddress;        pHardware->m_ulVIoAddr=(ULONG)MmMapIoSpace(phyAddr,256,FALSE);        RETAILMSG(T ...…

查看全部问答>

CPU上带有硬件视频解码,我如何应用(使用)这个硬解码功能来播视频文件?

CPU上带有硬件视频解码,我如何应用(使用)这个硬解码功能来播视频文件?(请给一个思路) …

查看全部问答>