如何设置STM8单片机选项字

发布者:机械梦想家最新更新时间:2020-04-01 来源: eefocus关键字:STM8  单片机  选项字 手机看文章 扫描二维码
随时随地手机看文章

STM8单片机在使用的时候有个问题比较麻烦,就是如果要使用某些引脚的第二功能时需要设置选项字,设置选项字可以通过代码设置。但是代码设置的时候比较麻烦,需要计算选项字相关寄存器要设置的值,如果设置值计算错误,在程序调试的时候不容易发现。


下来就来记录一下如何使用ST官方的烧写软件来设置选项字。首先在官网上下载STVP-STM8软件。官方地址

https://www.st.com/content/st_com/en/products/development-tools/software-development-tools/stm8-software-development-tools/stm8-programmers/stvp-stm8.html#get-software

在这里插入图片描述

点击Get Software 按钮,页面会跳转到最下方

在这里插入图片描述

点击右边的Get SoftWare 按钮下载,这时候会弹出一个许可协议的界面。

在这里插入图片描述

需要填写一个邮件地址,然后选中 我已阅读……前面的的方框,点右下角DowmLoad下载按钮。这时候登陆到刚才填写的邮箱中,打开接收到ST官方的邮件,在邮件中点击下载链接。这时候会跳转到刚才的下载页面,再点下载按钮,软件就可以下载下来了。这个软件是免费的,就是从官方下载比较麻烦。

在这里插入图片描述

下载好之后开始安装这个软件,安装完成之后,桌面上会出现ST Visual Programmer这个软件的快捷方式。

在这里插入图片描述

打开这个软件

在这里插入图片描述

左上角那个文件夹就是打开要烧写*.hex文件。


如果程序中使用到了第二功能,那么在程序中无需做任何设置。按照正常方式编写程序,然后生成HEX文件。用这个软件烧写代码的时候,在这个软件界面设置选项字就行。


打开要烧写的HEX文件

在这里插入图片描述

在这里插入图片描述

打开hex文件后,在烧写软件界面上选择OPTION BYTE窗口。

在这里插入图片描述

将这个界面设置为全屏显示

在这里插入图片描述

左边的AFR7----AFR0就是设置单片机所有引脚第二功能的区域。

在这里插入图片描述

鼠标选中右边的选项,这时候会出现一个倒三角,点一下倒三角会出现一个下拉菜单。

在这里插入图片描述

此时可以看出默认选择的功能是 PC3引脚为TIM1_CH3功能,PC4引脚为TIM1_CH4 、AIN2、CLK_CCO功能。

在这里插入图片描述

如果选择下拉框中的第一项,那么引脚功能就是 PC3引脚为TIM1_CH1N,PC4引脚为TIM1_CH2N,也就是设置PC3和PC4引脚为第二功能。


通过这个设置就可以清楚的看到PC3引脚有两个功能,默认功能为定时器1的通道3输出功能,第二功能为定时器1通道1的互补输出端。


如果代码中用到了定时器1的互补输出功能,那么在烧写程序的时候,就可以在这个界面上直接将PC3的功能选择为TIM1_CH1N,而不用再程序中做额外设置。


通过这个设置可以看到一旦PC3引脚的功能发生了改变,那么默认PC4引脚的功能也会发生改变。在使用的时候不能PC3引脚为默认功能,而PC4引脚为第二功能。


设置好选项字功能后,点击下载按钮烧写程序。

在这里插入图片描述

程序烧写完成之后,设置的引脚第二功能就会起作用。


下载按钮有两个,前面的下载按钮只是擦写活动区域的数据,后面的下载按钮会擦除芯片所有区域。


芯片一旦用这个烧写软件下载过程序后,所设置的引脚第二功能会永久有效。


比如说在线调试代码时如用到PC3的第二功能,也就是要将PC3设置为定时器1互补通道输出时。如果PC3引脚以前没有开启过TIM1-CH1N这个功能,同时代码中也没有设置PC3为TIM1-CH1N功能,此时直接用仿真器仿真代码时会发现PC3引脚没有波形。这是因为PC3的第二功能没有开启。


这时候需要打开ST Visual Programmer这个软件,添加生成的HEX文件,同时在OPTION BYTE这个选项中将PC3的功能选择为TIM1-CH1N功能。设置好之后将代码烧写到单片机中。这时候再使用在线调试功能,会发现PC3引脚已经可以输出波形了。说明第二功能只要用烧写软件设置一次后会永久有效。


通过下载软件设置一次选项字之后,在线调试代码的时候直接使用端口的第二功能就行。这样在写代码的时候就不用关心选项字如何设置了,按照常规的使用方式写代码就行了。

如果要使用其他引脚的第二功能,直接在选项字设置界面选择引脚功能就行。

在这里插入图片描述

关键字:STM8  单片机  选项字 引用地址:如何设置STM8单片机选项字

上一篇:单片机ADC采样算法----平均值采样法
下一篇:STM8L151系列 (OTA) Bootloader功能的开启 和 关闭

推荐阅读最新更新时间:2024-11-12 16:44

51单片机使用ec11旋转编码器 数码管显示
#include reg51.h #define GPIO_DIG P0 unsigned char code DIG_CODE ={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};//显示0~9的值 int tmp = 1; #define uchar unsigned char sbit BB = P1^0;//接编码器A端 sbit AA = P1^1;//接编码器B端 void delayms(uchar count) { uchar i,j; for(i = 0; i count; i++) for(j = 0; j 120; j+
[单片机]
单片机的系统扩展数据读写实验介绍
  一、实验目的   1、学习片外存贮器扩展方法。   2、学习数据存贮器不同的读写方法。   3、学习片外程序存贮器的读方法。   二、实验内容   1.实验原理图: 2、实验内容 (1)使用一片2764EPROM,作为片外扩展的程序存贮器,对其进行读。 (2)使用一片6264RAM,作为片外扩展的数据存贮器,对其进行读写(使用键盘监控命令和程序运行两种方法)。 3、实验说明 (1)在使用键盘监控命令读片外扩展的程序存贮器2764中内容时,由于本系统中该程序存贮器作为用户目标系统的程序存贮器,因此DV CC 系统必须处于仿真2状态,即“H.....”态,用MEM键即可读出。 (2)在使用键盘监
[单片机]
<font color='red'>单片机</font>的系统扩展数据读写实验介绍
单片机MSP430 - Timer_A 定时器中断程序
一、利用定时器定时功能,实现定时器单个溢出中断,实现 P3.0 方波输出 #include cc430x613x.h void main() { WDTCTL = WDTPW + WDTHOLD; // 停止看门狗定时器 P3DIR |= 0x04; // P3口初始化,设置为输出模式 TA0CCR0 = 32768; // 定义中断计数周期1s,时钟频率为32.768MHZ,32768 / 32768 = 1s TA0CCTL0 = CCIE; // TA0CCR0捕获/比较中断寄存器中断使能 T
[单片机]
空气PM2.5和PM10等测定(51单片机+攀藤PMS5003)
攀藤PMS5003主动式传输协议: 官方推荐的电路: 我的连接方式: 主程序: /* 功能说明: 读取攀藤PMS5003空气质量传感器数据并显示PM2.5和PM10的值。 */ #include config.h #include lcd1602.h void UART_init() { TMOD = 0x20; //T1工作模式2 8位自动重装 TH1 = 0xfd; TL1 = 0xfd; //比特率9600 TR1 = 1; //启动T1定时器 SM0 = 0; SM1 = 1; //串口工作方式1
[单片机]
空气PM2.5和PM10等测定(51<font color='red'>单片机</font>+攀藤PMS5003)
单片机C语言程序设计:外部 INT0 中断控制 LED
/* 名称:外部 INT0 中断控制 LED 说明:每次按键都会触发 INT0 中 断,中断发生时将 LED 状态取反,产 生 LED 状态由按键控制的效果 */ #include reg51.h #define uchar unsigned char #define uint unsigned int sbit LED=P0^0; //主程序 void main() { LED=1; EA=1; EX0=1; IT0=1; while(1); } //INT0 中断函数 void EX_INT0() interrupt 0 { LED=~LED; LED 亮灭 }
[单片机]
<font color='red'>单片机</font>C语言程序设计:外部 INT0 中断控制 LED
单片机编程中的while循环语句
  在我们单片机C语言编程的时候,每个程序我们都会固定的加一句while(1),这条语句就可以起到死循环的作用。对于while语句来说,他的一般形式是: While (表达式) { 循环体语句; }   在C语言里,通常表达式符合条件,我们叫做真,不符合条件,叫做假。比如前边i 30000,当i等于0的时候,那这个条件成立,就是真,如果i大于30000的时候,条件不成立,叫做假。   while(表达式)这个括号里的表达式,为真的时候,就会执行循环体语句,当为假的时候,就不执行。在这里先不举例,后边遇到时再详细说明。   还有另外一种情况,就是我们C语言里边,除了表达式外,还有常数,习惯上,我们非0
[单片机]
有关单片机延时程序
应用单片机的时候,经常会遇到需要短时间延时的情况。需要的延时时间很短,一般都是几十到几百微妙(us)。有时候还需要很高的精度,比如用单片机驱动 DS18B20的时候,误差容许的范围在十几us以内,不然很容易出错。这种情况下,用计时器往往有点小题大做。而在极端的情况下,计时器甚至已经全部派上了别的用途。这时就需要我们另想别的办法了。 以前用汇编语言写单片机程序的时候,这个问题还是相对容易解决的。比如用的是12MHz晶振的51,打算延时20us,只要用下面的代码,就可以满足一般的需要: mov r0, #09h loop: djnz r0, loop 51 单片机的指令周期是晶振频率的1/12,也就是1us一个周期。mov r
[单片机]
小广播
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved