STM8 时钟修改

来自丢石头百科
Admin讨论 | 贡献2021年6月18日 (五) 18:01的版本 (文本替换 - 替换“http://{{”为“https://{{”)
(差异) ←上一版本 | 最后版本 (差异) | 下一版本→ (差异)
<tbody></tbody>
<tbody></tbody>
系统功能

  对STM8的时钟修改,并用LED进行显示,观察LED的闪烁速度是否有变化。   

<tbody></tbody>
硬件设计

STM8 LED PB.jpg LED控制电路原理图

<tbody></tbody>
软件设计

/********************************************************************* 微 雪 电 子 WaveShare <a class="Blue_2_12px_" href="https://wiki.diustou.com/" style="color: rgb(7, 66, 184);">http://www.waveShare.net

目标系统: 基于STM8单片机  应用软件: Cosmic CxSTM8  说 明: 若用于商业用途,请保留此段文字或注明代码来源 深 圳 市 微 雪 电 子 有 限 公 司 保 留 所 有 的 版 权 

                                                                                                                                          • /
  1. include <STM8S207S8.h>
  2. define LED_PORT PB_ODR

void Init_GPIO(void) {        PB_DDR = 0x0d;        PB_CR1 = 0x0d;         PB_CR2 = 0x00; }

void delay_ms(unsigned int ms) {        unsigned char i;        while(ms!=0)        {               for(i=0;i<250;i++)               {}               for(i=0;i<75;i++)               {}               ms--;        } } void main(void) {        unsigned char i;        Init_GPIO();

       while (1)        {        //启用内部高速晶振且无分频16MHz        CLK_SWCR|=0x02; //开启切换        CLK_SWR=0xe1;        while((CLK_SWCR & 0x01)==0x01);        CLK_CKDIVR=0x00;        CLK_SWCR&=(~0x02); //关闭切换        for(i=0;i<10;i++)        {                LED_PORT=0xff;               delay_ms(500);               LED_PORT=(~0xff);               delay_ms(500);        }        //启用内部高速晶振且8分频(内部始终分频)2MHz        CLK_CKDIVR=0x18;        for(i=0;i<5;i++)        {                 LED_PORT=0xff;               delay_ms(500);               LED_PORT=(~0xff);               delay_ms(500);        }        //启用外部高速晶振且16分频500KHz        CLK_SWCR|=0x02; //开启切换        CLK_SWR=0xb4;        while((CLK_SWCR & 0x01)==0x01);        CLK_CKDIVR=0x04;        CLK_SWCR&=(~0x02); //关闭切换        for(i=0;i<5;i++)        {               LED_PORT=0xff;               delay_ms(500);               LED_PORT=(~0xff);               delay_ms(500);        }        //启用内部低速晶振且无分频        CLK_SWCR|=0x02; //开启切换        CLK_ICKR|=0x08; //使能内部低速晶振        CLK_SWR=0xd2;        while((CLK_SWCR & 0x01)==0x01);        CLK_CKDIVR=0x00;        CLK_SWCR&=(~0x02); //关闭切换        for(i=0;i<5;i++)        {               LED_PORT=0xff;               delay_ms(500);               LED_PORT=(~0xff);               delay_ms(500);        }        }

}
<tbody></tbody>
系统调试
观察观察LED的闪烁速度是否有明显的变化。