IARFORSTM8例程要点总结计划Word文档格式.docx
- 文档编号:19916970
- 上传时间:2023-01-12
- 格式:DOCX
- 页数:19
- 大小:19.04KB
IARFORSTM8例程要点总结计划Word文档格式.docx
《IARFORSTM8例程要点总结计划Word文档格式.docx》由会员分享,可在线阅读,更多相关《IARFORSTM8例程要点总结计划Word文档格式.docx(19页珍藏版)》请在冰豆网上搜索。
LED1接在PD3上
voidGPIO_init(void)
{
PD_DDR=0x08;
//
配置
PD
端口的方向寄存器
PD3
输出
PD_CR1=0x08;
设置
为推挽输出
PD_CR2=0x80;
使能
外面中断
}
voidEXTI_init(void)
EXTI_CR1=0x80;
//PD口下降沿触发中断
#pragmavector=0x02//这里很要点!
看下面说明。
__interruptvoidEXTI_PD7_TLI(void)
LED1_FLASH;
voidinit_devices(void)
asm("
sim"
);
//关全局中断
GPIO_init();
EXTI_init();
rim"
//开全局中断
voidmain(void)
init_devices();
主循环里没有程序需要执行
while
(1);
这里重视要说明的一点是PD7的外面中断程序。
看了一下芯片手册,PD口外面中断EXTI3的中断向量号是6,想自然,又是想自然,按IAR的规矩中断
向量要加2,就这样写#pragmavector=0x08,结果就是按下按键,程序没响应
了,素来在中断里不出来。
接下来只能另想方法,仔细翻了资料后发现,PD7
和PD其他端口不同样,PD7后边拖了个小尾巴TLI,再看手册上的TLI描述,
乖乖,TLI拥有芯片最高等别中断,享有独立专用的中断向量号0,这下就好办
了,按IAR的规矩,向量号加2,程序改成#pragmavector=0x02,重新来一遍编译、下载、运行,按键终于听话了。
IAR+STM8——UART串口发送与中断接收
22:
34|分类:
STM8的UART功能富强,除了老例的串口异步通讯外,还拥有LIN主模
式、红外编解码器、智能卡模拟等功能。
新手还是从基本的串口通讯下手,那些高级功能等熟练今后再慢慢研究吧。
voidCLK_init(void)
CLK_CKDIVR=0x08;
//16M内部RC经2分频后系统时钟为8M
voidUART3_init(void)
UART3_BRR2=0x01;
//设置波特率9600
UART3_BRR1=0x34;
//8M/9600=0x341
UART3_CR2=0x2C;
//赞同接收中断,赞同接收,赞同发送
#pragmavector=UART3_R_RXNE_vector
__interruptvoidUART3_RX_RXNE(void)
unsignedcharc;
c=UART3_DR;
//接收到数据了
while(!
UART3_SR_TXE);
c++;
把接收到的数据加
1
UART3_DR=c;
再发回去,为什么这么做?
在电脑上串口调试软件里发
1就
收到
2,发
A就收到
B,看运行结果比较方便
CLK_init();
UART3_init();
//开发板上的串口接的是
UART3,刚开始想自然的认为
UART1,
浪费我半个小时
IAR+STM8——TIM1准时溢出中断
20:
56|分类:
STM8的TIM1是16位高级控拟定时器,作为新手不要急着玩高级功能,先从
简单的准时溢出中断开始。
那么这个简单的目标就定为LED1亮500ms,灭
500ms,循环往复,这样而已。
voidTIM1_init(void)
TIM1_PSCRH=0x1F;
//8M系统时钟经预分频f=fck/(PSCR+1)
TIM1_PSCRL=0x3F;
//PSCR=0x1F3F,f=8M/(0x1F3F+1)=1000Hz
,每个计
数周期1ms
TIM1_ARRH=0x01;
TIM1_ARRL=0xF4;
TIM1_IER=0x01;
TIM1_CR1=0x01;
自动重载寄存器ARR=0x01F4=500
每记数500次产生一次中断,即500ms
赞同更新中断
计数器使能,开始计数
#pragmavector=TIM1_OVR_UIF_vector
__interruptvoidTIM1_OVR_UIF(void)
TIM1_SR1=0;
//除去更新中断标志,这步不能够遗漏,否则会连续进入中断程序
TIM1_init();
好了,同样编译、下载、运行,看结果吧
IAR+STM8——系统时钟
24|分类:
默认分类|举报|字号订阅
STM8上电运行时默认使用内部16M的RC振荡器经8分频后的2M时钟频率作为系统时钟。
程序开始运行后能够经过设置相关寄存器来更正主时钟源,能够选择外面晶振作为主时钟源和CPU时钟分频。
那么这里就选择比较简单的操作,更正内部RC时钟预分频器获得8M系统时钟。
增加内部RC时钟预分频后的代码以下:
PD_ODR_ODR3//开发板上的LED1接在PD3上
voiddelay(unsignedintcount)
while(count--);
while
(1)
delay(50000);
IAR+STM8——GPIO
02|分类:
第二天,从最基本的IO操作开始学习。
在STM上IO绝大多数是GPIO。
刚开始学习,测试程序不要搞复杂,越简单越不简单出错。
下面是代码,没有使用STM8官方固件库。
//GPIO测试
IAR+STM8——ADC模数变换器
47|分类:
今天有空来连续写学习笔录。
STM8片上集成了10位逐次比较型模数变换
器,在开发板上有个电位器接到了AIN3,但没有能够显示数据的LED数码管或
LCD液晶显示屏,怎么办呢?
经过前面的学习,这个问题不难解决,在这里能够把AD采集数据经过UART发送到电脑上显示。
配置设置使能
PD端口的方向寄存器
PD3为推挽输出
PD7外面中断
#pragmavector=0x02
unsignedintvalue;
ADC_CSR&
=~0x80;
//除去EOC变换结束标志
ADC_CR1|=0x01;
//开始单次变换
(ADC_CSR&
0x80));
//等待单次变换完成
value=((int)ADC_DRH<
<
2);
//先读高8位,默认设置数据左对齐
value|=ADC_DRL;
//再读低8位
UART3_DR=value;
//经过UART3发送AD采样结果
UART3_DR=value>
>
8;
voidADC_init(void)
ADC_CSR=0x03;
//ADC输入引脚AIN3
ADC_CR1=0x01;
//ADC开启
UART3_CR2=0x0C;
//赞同接收,赞同发送
ADC_init();
在本例中仅使用了ADC的单次变换模式,每按一次按键进行一次AD变换,并
把变换结果经过UART发送,这样能够在电脑上经过超级终端或串口调试软件查察数据。
经过此次测试,还发现一个现象,若是把除去EOC变换结束标志放在读取数据此后,那么在下次启动单次变换后,EOC标志位会自动置位,此时必定人为的等待7us后才能读到正确的数据,否则只能读到前一次的变换数据,可能这是
STM8的ADC与其他MCU不一样之处。
IAR+STM8——PWM
24:
19|分类:
开发板上的LED1接在了PD3上,而PD3复用功能是TIM2_CC2,正好能够用来测试PWM功能。
自然板上的别的2个LED也能够用,LED2对应PD2/TIM3_CC1,LED3对应PD0/TIM3_CC2。
本例程经过电位器来调整LED1
的亮度。
//PD_CR1=0x08;
配置设置
voidTIM2_init(void)
TIM2_CCMR2=0x70;
//PWM模式2
TIM2_CCER1=0x30;
//CC2配置为输出
TIM2_ARRH=0x03;
//配置PWM分辨率为10位,ARR=0x3FF
TIM2_ARRL=0xFF;
//PWM频率=8M/0x03FF=7820Hz
TIM2_CR1=0x01;
//计数器使能,开始计数
Run(void)
TIM2_CCR2H=(unsignedchar)(value>
8);
//更新CC2比较寄存器TIM2_CCR2L=(unsignedchar)(value);
TIM2_init();
while
(1)Run();
STM8互补PWMTIM1准时器输出成功
2014-10-2215:
11:
50|分类:
程序测试:
#include<
iostm8s003f3.h>
voidPWM_INIT()
CLK_PCKENR1|=0x80;
//开启准时器1外设时钟
TIM1_EGR|=0x01;
//重新初始化TIM1
TIM1_CR1=0x00;
//B7(0)能够直接写入B65(00)边缘对齐模式
上计数B3(0)计数器不停止发生更新事件
TIM1_RCR=0x00;
TIM1_PSCRH=0;
//设定预分频为,16分频1M
TIM1_PSCRL=0x80;
//PWM的时钟影响周期
TIM1_CCER1=0x0F;
//CC2ER1开启1,2,高电平有效
TIM1_CCMR1=0x60;
//PWM模式1,CC1配置入输出
TIM1_ARRH=0;
//设定重装载值
TIM1_ARRL=0xFF;
//PWM的周期
TIM1_CCR1H=0;
TIM1_CCR1L=0x80;
//占空比值
TIM1_CR1|=0x01;
//使能TIM1计数器
TIM1_BKR|=0x80;
B4(0)向
voidmain()
PWM_INIT();
特别重要注意,芯片的Option配置AFR7和AFR0更正以以下图
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- IARFORSTM8 例程 要点 总结 计划