打印
[STM8]

删帖

[复制链接]
7256|6
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
本帖最后由 heartdoll 于 2015-12-11 13:15 编辑

删帖

(I3D)2%N2T`SD~8TT{X}DZG.jpg (59.6 KB )

(I3D)2%N2T`SD~8TT{X}DZG.jpg
沙发
cjhk| | 2013-3-26 18:40 | 只看该作者
顶起来   这个还真的就不是很了解诶    水平有限   呵呵

使用特权

评论回复
板凳
heartdoll|  楼主 | 2013-3-26 21:50 | 只看该作者
有2种方法,第一种可以用代码来设置,我封装的一个函数

typedef enum{
  
  AFR7_PD4_BEEP=(uint8_t)0x80,
  AFR6_PB4_5_I2C_SDA_SCL=(uint8_t)0x40,
  AFR5_PB3_2_1_0_TIM1_ETR_CH2_1_0=(uint8_t)0x20,
  AFR4_PD7_TIM_CH4=(uint8_t)0x10,
  AFR3_PD0_TIM1_BKIN=(uint8_t)0x08,
  AFR2_PD0_CLK_CCO=(uint8_t)0x04,
  AFR1_PA3_TIM3_CH1_PD2_TIM2_CH3=(uint8_t)0x02,
  AFR0_PD3_ADC_ETR=(uint8_t)0x01
}Remap_Function_TypeDef;

/*******************************************************************************
* 名称: AlternateFunctionRemapping
* 功能: 选功能重映射的设置
* 形参: Function 需要重映射的功能      
* 返回: 无
* 说明: 如果调试需要打印数据的时候
         在自定义宏的地方添加#define DEBUG_AFR即可,下载程序后只有第一次执行
         打印出来设置前的功能才是对的,执行完之前就被写进flash,如果不修改的话,
         每次都出来的数据都是一样,所以只执行一次就行了,建议用的时候,就在调
         试的时候进行执行一次就可以,以后都不需要出现了,除非再次更改。
         在调用AlternateFunctionRemapping函数之前需要初始化串口函数Uart_Init
         这些设置写进flash,运行一次即可,在调试的时候运行即可
******************************************************************************/

void AlternateFunctionRemapping(Remap_Function_TypeDef Function)
{
  uint8_t Function_temp;
  
  FLASH_Unlock(FLASH_MEMTYPE_DATA);/*要对选项字节写操作,必须要先解锁FLASH*/
  while(!(FLASH->IAPSR & FLASH_IAPSR_DUL));/*等待解锁完毕*/
  /*备选功能重映射的设置可以同时写多个不会被覆盖,因此在操作之前读取当前的状态,再根据当前的状态进行修改*/
  Function_temp=(uint8_t)(FLASH_ReadOptionByte(AFR_ADDRESS)>>8);
  #ifdef  DEBUG_AFR
  printf("\r\nFunction_temp:%x\r\n",Function_temp);
  #endif

  while(!(FLASH->IAPSR & FLASH_IAPSR_DUL));/*等待解锁完毕*/
  FLASH_ProgramOptionByte(AFR_ADDRESS,Function|Function_temp);
  
  #ifdef  DEBUG_AFR
  Function_temp=(uint8_t)(FLASH_ReadOptionByte(AFR_ADDRESS)>>8);
  printf("\r\nFunction_temp:%x\r\n",Function_temp);
  #endif
  FLASH_Lock(FLASH_MEMTYPE_DATA);/*操作完要加锁*/
   
}

只要调用我的这个函数就可以


恢复初始值

/*******************************************************************************
* 名称: DefaultFunctionRemapping
* 功能: 恢复默认功能的设置
* 形参: Function 需要恢复默认的功能      
* 返回: 无
* 说明: 如果调试需要打印数据的时候
         在自定义宏的地方添加#define DEBUG_AFR即可,下载程序后只有第一次执行
         打印出来设置前的功能才是对的,执行完之前就被写进flash,如果不修改的话,
         每次都出来的数据都是一样,所以只执行一次就行了,建议用的时候,就在调
         试的时候进行执行一次就可以,以后都不需要出现了,除非再次更改。
         在调用DefaultFunctionRemapping函数之前需要初始化串口函数Uart_Init  
         这些设置写进flash,运行一次即可,在调试的时候运行即可
******************************************************************************/
void DefaultFunctionRemapping(Default_Function_TypeDef Function)
{
  uint8_t Function_temp;
  
  FLASH_Unlock(FLASH_MEMTYPE_DATA);/*要对选项字节写操作,必须要先解锁FLASH*/
  while(!(FLASH->IAPSR & FLASH_IAPSR_DUL));/*等待解锁完毕*/
  /*备选功能重映射的设置可以同时写多个不会被覆盖,因此在操作之前读取当前的状态,再根据当前的状态进行修改*/
  Function_temp=(uint8_t)(FLASH_ReadOptionByte(AFR_ADDRESS)>>8);
  #ifdef  DEBUG_AFR
  printf("\r\nFunction_temp:%x\r\n",Function_temp);
  #endif

  FLASH_ProgramOptionByte(AFR_ADDRESS,Function & Function_temp);
  
  #ifdef  DEBUG_AFR
  Function_temp=(uint8_t)(FLASH_ReadOptionByte(AFR_ADDRESS)>>8);
  printf("\r\nFunction_temp:%x\r\n",Function_temp);
  #endif
  FLASH_Lock(FLASH_MEMTYPE_DATA);/*操作完要加锁*/
}

typedef enum{
  AFR7_PD4_TIM2_CH1=(uint8_t)0x7f,
  AFR6_PB5_AIN5_PB4_AIN4=(uint8_t)0xbf,
  AFR5_PB3_2_1_0_AIN3_2_1_0=(uint8_t)0xdf,
  AFR4_PD7_TLI=(uint8_t)0xef,
  AFR3_PD0_TIM3_CH2=(uint8_t)0xf7,
  AFR2_PD0_TIM3_CH2=(uint8_t)0xfb,
  AFR1_PA3_TIM2_CH3_PD2_TIM3_CH1=(uint8_t)0xfd,
  AFR0_PD3_TIM2_CH2=(uint8_t)0xfe
}Default_Function_TypeDef;

调用这个函数就可以恢复原来的设置了。
第二种方式就是用ST-LINK结合IAR设置,详情请见楼主位的9和14这2份教程,很清楚的介绍

使用特权

评论回复
地板
heartdoll|  楼主 | 2013-3-26 21:50 | 只看该作者
以上是风驰大哥的解决方案 详细内容见帖子https://bbs.21ic.com/forum.php?mo ... p;page=1#pid2844526

使用特权

评论回复
5
cabbageybc| | 2013-7-5 00:02 | 只看该作者
刚入手stm8s003f3p6 TIM1的PWM输出不是默认选项,导致无法输出波形 估计就是这个选项字没有配置,多谢各位提出的方案!

使用特权

评论回复
6
mavislw| | 2015-5-19 10:54 | 只看该作者
heartdoll 发表于 2013-3-26 21:50
有2种方法,第一种可以用代码来设置,我封装的一个函数

typedef enum{

请问第二种方法呢?

使用特权

评论回复
7
mavislw| | 2015-5-19 10:55 | 只看该作者
请问第二种方法呢?

使用特权

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

本版积分规则

3

主题

15

帖子

0

粉丝