自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(24)
  • 收藏
  • 关注

原创 C89结构体封装函数指针

前言总结用到过的几种函数指针。函数指针的普通用法比如应用需求是不同协议接收1字节,加一,返回。1.定义指针uint8_t F_Receive1Byte(uint8_t (*pfun)()){ uint8_t b = (*pfun)(); return b+1;}2.具体调用uint8_t F_WireLessSwitchBit(void);uint8_t F_WireLessProductBit(void);uint8_t F_WireLess1527Bit(void)

2020-10-10 16:58:55 494

原创 STM32同时使用多个串口,使用printf

前言:项目中正好用到多个串口对不同的上位机输出数据,正好就折腾一下STM32多串口同时使用。实际使用后,还是使用的是分时串口发送,没有用中断发送,因为我要使用printf,用中断,担心有函数重入的问题,没有这样尝试。我为啥要写这个呢,因为网上写的这些,都不符合我的需求,我就想用printf格式化输出,但是网上居然有自己去解析格式的做法,我看了一下,也就是把常用的几个解析了,并没有做到真正的和printf一样。正文先贴代码, 代码内容就是初始化串口。这个很好理解。bsp_usart.c/**.

2020-08-31 17:30:52 13578 3

原创 VS2019运行SeggerEval_WIN32_MSVC_MinGW_GUI_V522

前言野火程序包里 SeggerEval_WIN32_MSVC_MinGW_GUI_V522 程序包是基于VS2013,但是都2020年了,上哪去找VS2013.直接打开,编译大量错误。在野火论坛也没有找到,相关解决说明。在网上找到VS2017的解决办法,想着折腾一下。照着改一下,编译还是有大量错误,自己复盘再看更改选项,发现有个继承选项博主没有开,不知是VS2017不用开,还是博主故意留了个玩笑,自己勾上清理项目,重新生成通过。留下解决方案,希望帮助遇到和我遇到同样问题的人。参考解决博文 解决VS2

2020-05-09 17:05:14 1153

原创 N76E003编译数组内存不连续的问题

数组内存不连续编译的时候关闭外部编辑器,不然可能有内存共用问题。我使用Keil C51编译N76E003发现数组内存不连续问题,这里特意记录下来。编译情况:一个16位的数组,前3个元素是连续的地址,从第4个开始,出现不连续。用指针取数组每一个元素的地址能看出来。但是,debug直接把数组放到watch中能看到正确的显示。通过memory看元素地址不是连续的。出现情况:使用了外部编辑器。...

2020-03-14 09:44:03 398

原创 N76E003 WKT 10K IRC偏差

我在使用过程中发现一个奇怪的现象,WKT中断在跑普通16M时钟的时候,定时是准的。跑掉电模式突然就偏差大了。搜索全网未见有相关内容,所以手动自己排除。官方数据手册,勘误手册均未说明。1.主时钟使用10K,通过IO输出时钟,得到时钟频率10.16K-10.18K,确定内部低速时钟是准确的。2.写测试代码,发现在待机模式,WKT中断是准的。3.最后怎么更改,只要是设置掉电,突然WKT就变大。大...

2020-02-24 15:34:03 349 1

原创 STM8硬件I2C事件锁死

转载请标明原地址。前言:之前我使用STM8的硬件IIC通信卡死在判忙,专门写了一篇注意事项。这个周又使用,对之前的理解注意事项又有了更深刻的理解。上一篇,IO口状态设置不对,会是IIC不能正常工作。本质上我也没想明白,这一次使用又使用,结果碰到了更难理解的问题,直接把STM8复位都不能恢复正常。倒是更加深了之前为什么IO设置不对会是硬件I2C不能正常工作的理解。当把I2C 数据脚设置为输出...

2020-02-23 09:40:04 1716 2

原创 硬件方案--过零触发效果图

前言记录一种过零触发方案,先看效果,再说实现。过零触发效果图50Hz闭合效果50Hz断开效果60Hz闭合效果60Hz断开效果

2019-07-17 09:49:07 323

原创 STM8S IO最快翻转速度

需求:IO产生最快的翻转脉冲。第一次尝试:IRC使能16M,不分频。IO设置为推挽高速输出。While(1)死循环翻转。代码如下:void main(void){ CLK_HSIPrescalerConfig(CLK_PRESCALER_HSIDIV1); //16M GPIO_Init(GPIOD, GPIO_PIN_3, GPIO_MODE_OUT_PP_HIG...

2019-07-15 09:53:05 2892 3

原创 OTP(OneTimeProgrammable)开发之编辑软件UE

一般OTP的开发IDE都提供编辑器但是效果都不好,背景色也不能调刺眼得很。当把功能分成多个文件后查找起来特别不方便。这里提供另一个编辑器,UEdit.这里说一下使用UE容易碰到的问题。1.Ctrl+C / Ctrl+V 不可用是误按Ctrl+0 解决办法:Ctrl+12.光标变1字节,是误按 Insert ,解决办法:按 Insert。3.想要自己造高亮文件,关键字要按字母顺序才能识别。...

2019-07-13 18:24:08 399

原创 OTP(OneTimeProgrammable)开发之工程经验

前言这个篇目写的是我做工程这么久,对于单片机的理解,对于项目功能的理解。不一定全部正确,写下来是对自己工作的总结归纳,希望对有需要的人有帮助。测试程序测试程序的意义在于测试硬件,是不是都达标。软件测试不在这一步,所以测试低电不是测试这个寄存器有没有效,更重要的是这条线路有没有通,有没有电压衰减。IIC读写EEPROM出错IIC读写EEPROM有时候出错,是因为中断占用时间太长,导致EEP...

2019-07-13 18:01:03 2403

原创 OTP(OneTimeProgrammable)开发之汇编技巧

我开发的是义隆单片机,所以以义隆的汇编举例。定义IO口原来的方式: IO_Buz == 1给IO置1,则需要写成BS P5.IO_Buz更改方式: IO_Buz == P5.1BS IO_Buz这样做的好处是,可避免程序更改带来的兼容问题,只要改文件定义部分就好,而且书写量变小。定义常用的状态标志位一般功能寄存器定义里都有类似如下的定义:R3...

2019-07-13 11:36:57 886

原创 OTP(OneTimeProgrammable)开发之国产IC篇

我们原来用的是义隆的IC,后来市面上出现了价格足够吸引人的替代IC。我们就转战这些IC了。有些IC做得不如义隆好。这里记录一下我到的IC且与义隆有区别的。不保证完全正确,请辩证看待。IC的具体厂家也不提供,一是有广告之嫌,二是怕厂商找我麻烦说我诋毁他们。IO唤醒ICE 153S 仿真器P6.1不能按键唤醒。1508 P6.1没有按键唤醒。仿真通过后要烧509A才可以验证。超过0x2F的R...

2019-07-13 11:06:26 958

原创 OTP(OneTimeProgrammable)开发之IDE篇

eUIDE在义隆的官网上还提供了另一个IDE,但是当前这两个IDE都已经停止更新了。编译器也会出错定义变量连续4个跳着放编译会出错。比如20、21 、 22 、 23 定义放到2F下面编译就会出现跳行。这里的经验是要规范书写,不要随意变动位置。仿真IDE,有时候F8整体跳转不可用是软件快捷键与其他软件冲突。如果确定代码没有写错,但是仿真器就是不按预期执行,应该查看list文件,看相同...

2019-07-13 10:46:11 573

原创 OTP(OneTimeProgrammable)开发之芯片篇

EM78Pxx基础IO操作:(1)、操作顺序:先输入,再上拉;先关上拉,再输出。(2)、单独对位操作: ior ioc6 and a,@(0xff^(mIO_1+mIO_2)) iow ioc6 ;改输出 ior ioc6 or a,@ (mIO_1+mIO_2) iow ioc6 ...

2019-07-13 10:21:29 2732

原创 OTP(OneTimeProgrammable)开发之义隆仿真器

OTP开发之义隆仿真器ICE153S硬件上并口和USB口区别仿真器字节选项ICE153S硬件上并口和USB口区别使用153S开发仿真器分并口和USB版本。程序写法上没区别,在使用的时候并口反应速度要比USB口的快,但是使用体验上USB口的要好些。原因如下:1.并口仿真器断点设置有限制。断点不能设在涉及PC跳转的指令上,不然会出现循环跑就只能跑到一次,跑到了也会返回的堆栈出错。2.并口...

2019-07-13 09:22:48 962

原创 N76E003为什么不把BSP示例写成库函数

我最开始开发的是STM8S003,用的是标准库函数。开发起来各种方便。现在改到N76E003开发,发现只有几个宏定义,没有标准的库函数。第一次开发就在想,为什么不做成和ST一样的库函数,应该不难。等我第一次完整开发完,就明白这里的道理了。新唐使用的Keil4 对C51优化不如ST使用的IAR。对于没有调用的函数,Keil4所有的都编译,对于没有使用的变量,keil4也全部编译。反观IAR 就有...

2019-07-09 17:21:43 898 5

原创 N76E003,C51开发不编译

第一次开发N76E003不免各种问题。这个不编译的问题,从第一天写代码就困扰我,我第一次换了工程好了,第二次改Xdata,也行。现在碰到,第三种情况。改优化等级,从前默认8,总有不编译的,改为7以后,终于按预期编译了。 第一个工程终于正常运行。还是怀念STM8开发,没管过这些东西,开发起来只管功能实现。 重要的事情再重复一次,当有语句不按预期执行,开deBUG,看这一行编译了没有,没...

2019-07-06 16:12:50 396

原创 N76E003开发中Keil memory model设置

上一篇中说,选择Xdata就可以用了。今天改程序,发现编译是没有错了,可是下载进去总是复位。排查复位标志是,硬件故障引起的复位。HardF 硬件故障标志。最后排查下拉,还是这个memory model 有问题。下面说针对N76E003说说使用DATA \PDATA\ XDATA三种情况,这个都是直接编译试出来的经验,不保证完全正确。使用Small,那么编译的时候data 数据不能大于128。如...

2019-06-22 15:35:48 3092

原创 N76E003开发天坑指南

不说废话直接干货**1.keil4 编译错误。变量编译为无效代码,不能执行;或者编译了但是不能赋值,不能运算。**解决办法:这种是Keil工程坏了,解决办法是用官方的工程重新改,把自己的.C.H文件扣过去重新编译。问题解决。不要想着是编译器优化了,这里就是出问题了。而且如果把官方的优化等级8改了,网上说打印就会有问题。2.好好的工程,加一行打印,多定义一个结构体,就编译错误。各种乱七八...

2019-06-20 14:10:04 2709 3

原创 Nordic51822用PPI方式产生PWM注意事项

一般PPI实现PWM方法1.使能time1,分配2个比较事件。注意只有周期时间是清除定时器,产生中断。2.使能一个IO的GPIOTE任务。3.分配2个PPI通道4.绑定PPI通道1,定时比较事件1,IO翻转任务;绑定PPI通道2,定时比较事件2,IO翻转任务;5.中断里改变CC[0]和CC[1]的值。达到的效果是,可改变周期,和占空比。实现注意事项1.跑裸机不带协议栈,PWM可以...

2019-03-27 15:45:04 1285 2

原创 STM8S硬件IIC卡在判忙,注意事项

1.具体的代码我就不贴了,21IC有很多示例,放到自己的工程死都不通。后面放弃,改用模拟IIC。今天又尝试半天,居然通了,特意发文章纪念,且帮助有同样困惑的人。2.下面是关键,下面这样设置IO可正常使用硬件IICGPIO_Init(GPIOB, GPIO_PIN_4, GPIO_MODE_OUT_OD_HIZ_SLOW); //IIC,OD outPutGPIO_Init(GPIOB, GP...

2018-12-04 14:43:08 2919 3

原创 Jlink提示错误信息read:@0x02000004

Jlink提示错误信息read:@0x02000004出现这个的情况是升级了新的MDK才会这样,从网上查的的信息来看5.24之后的都会有这个问题,这个不是盗版JLink才会出现,我用的是正版的Jlink也这样。解决的办法是在Keil_v5/ARM/Segger安装目录下找到JL2CM3.dllJLinkARM.dllJLTAgdi.dll替换更老版本的文件,建议替换前先备份新的,万一...

2018-11-09 14:17:24 5479 5

原创 使用STM8S自带BootLoader_2

仔细读ST支持文档 UM0560,按步骤操作。程序准备工作: 1.开串口接收中断,发送。/* ********************************************UART2 configured as follow: - BaudRate = 115200 baud - Word Length = 8 Bits - One Stop Bit ...

2018-09-10 18:30:01 770 1

原创 使用STM8S自带BootLoader_1

本文将详细记载怎么使用STM8S自带BootLoader实现程序更新。准备工作: 1. ST支持文档 UM0560(说明BootLoader怎么用) 2. ST官方下载软件 STMFlashLoader Demo.exe 3. IAR Embedded Workbench 、ST Visual Programmer 4. 2块STM8S105K6,用来实现更新操作。实践操作: ...

2018-09-08 17:14:30 4003

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除