打印
[STM8]

STM8S即想保留ST库的高移植性,又想少用Flash

[复制链接]
2227|5
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
wgggjfg|  楼主 | 2012-6-18 19:58 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
最近在用STM8S103的IC 才8K的Flash,以前用惯了库文件但用到后面发现资料很紧张,所以花了点时间搞了个较灵活的代码,它可以较好的解决以上问题,附件用有它的程序。
它的其本思路是:先用库文件初始化后,把寄存器与复位值比较,值不相同的用串口打印出C语言代码,然后手动复制到程序中去取代以前的库文件初始化。
如下面就是对GPIOA代码自动生成程序:
if(GPIO_ODR_RESET_VALUE  != GPIOA->ODR) printf("\r\n\tGPIOA->ODR=0x%x;\r\n",(int)GPIOA->ODR);
if(GPIO_DDR_RESET_VALUE  != GPIOA->DDR) printf("\tGPIOA->DDR=0x%x;\r\n",(int)GPIOA->DDR);
if(GPIO_CR1_RESET_VALUE  != GPIOA->CR1) printf("\tGPIOA->CR1=0x%x;\r\n",(int)GPIOA->CR1);
if(GPIO_CR2_RESET_VALUE  != GPIOA->CR2) printf("\tGPIOA->CR2=0x%x;\r\n",(int)GPIOA->CR2);
附件中"Reduce.h"就是它的配置文件。
先要开启定义的打印功能,如果资源不够可以分四次依次开启,
#define BUILER_GPIO_EXTI_ITC_BEEP_ADC
#define BUILER_I2C_SPI_UART_CAN_CLK
#define BUILER_TIM
#define BUILER_IWDG_WWDG_AWU_FLASH_OPT_RST
编译下载后将MCU的串口联到PC机,运行后就可从串口中得到代码,然后Copy到"Reduce.c"的 MCU_init_simplify()中。
全部搞定后取消定义的打印功能,然后把 USE_REDUCE_INIT值改为1 就可以了。大部分都测试过,有错误不足请陆续上传。

example.rar

417.61 KB

沙发
figo20042005| | 2012-6-18 20:51 | 只看该作者
这种思路,很有利于后续软件调试查找原因

使用特权

评论回复
板凳
baidudz| | 2012-6-18 22:56 | 只看该作者
试试看,多谢共享

使用特权

评论回复
地板
火箭球迷| | 2012-6-18 23:03 | 只看该作者
鼓励分析这种原创性的代码

使用特权

评论回复
5
gxgclg| | 2012-6-18 23:16 | 只看该作者
有时间测试一下,谢谢共享

使用特权

评论回复
6
nqyijian| | 2012-6-29 09:30 | 只看该作者
很有新意啊,不必对不需要修改的复位默认值重复操作。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

个人签名:专业人做专业事!高效充电。

65

主题

438

帖子

3

粉丝