你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

查看: 3175|回复: 1

【ST公益分享】stm8学习之 CSS

[复制链接]

10

主题

10

回帖

0

蝴蝶豆

新手上路

最后登录
2019-8-1
发表于 2011-3-23 23:28:20 | 显示全部楼层 |阅读模式
程序简介:
  该工程主要涉及到gpiorcctim部分,工程实现的功能是系统时钟内部和外部的切换已验证系统时钟的的安全性,当外部时钟失效时 会自动切换到内部时钟运行
  时钟特征:
1 强大的控制器,更容易得到高性能的同时保证功率最低
2 可独立管理的时钟源,都带有分频器  没有倍频 可以得到更高精度的时钟
3 可靠的无障碍时钟切换机制。程序运行中可以切换时钟源
4 抗干扰时钟配置寄存器,大部分时钟寄存器有一个互补寄存器,如果不匹配就会产生复位(系统自动完成)
  时钟源:
1—24m外部晶振
外部时钟信号 最高24m  //以上为HSE
16m高速内部rc振荡器  // HSI
128k低速振荡器        //LSI
 
言归正传  看我的程序:
  程序的现象是下载运行后,四个led会按照tim中断的频率 循环依次点亮,此时如果破坏外部晶振,时钟源会自动切换到内部时钟,现象是led点亮间隔变大了。
 
  程序配置:
 1. Led----gpio
 void GPIO_Init(void)
{
  LED1-3===PD0 PD1 PD3   
     
    PD_DDR |= 0x0D;              /*8位寄存器DDR用来配置io口的输入输出模式,每一位对应相应名称的io
这里我们配置 0 1 3位为输出 1为输出,0为输入). 00001011==0D          */
    PD_CR1 |= 0x0D;              /* CR1配置输入输出模式下的
功能,在输出模式下为
0 开漏输出
1 推免输出                 */
    PD_CR2  = 0x00;              /* 输出最大速度到2MHz
1:配置为10m. */
}
请看stm8手册  gpio部分
 
 
 
 
 
   Io配置的知识:
推挽输出与开漏输出的区别:
>>推挽输出:可以输出高,低电平,连接数字器件。
                     输出 0 时,N-MOS 导通,P-MOS 高阻 ,输出0。
                     输出 1 时,N-MOS 高阻,P-MOS 导通,输出1(不需要外部上拉电路)。
>>开漏输出:输出端相当于三极管的集电极. 要得到高电平状态需要上拉电阻才行. 适合于做电流型的驱动,其吸收电流的能力相对强(一般20ma以内).
                     输出 0 时,N-MOS 导通,P-MOS 不被激活,输出0。
                     输出 1 时,N-MOS 高阻, P-MOS 不被激活,输出1(需要外部上拉电路);此模式可以把端口作为双向IO使用。
  


  
 
2.LED--时钟配置:
 
void CLK_Init(void)
{
    /* Configure clock prescaler */
    CLK_CKDIVR = 0x01;          /*分频时钟源  */
    /* To select external source by automtic switch */
    CLK_SWCR |= 0x02;            /* 使能转化 */
    CLK_SWR   = 0xB4;            /* 时钟源选择 选择HSE*/
          
    while (!(CLK_SWCR & 0x08));  /* 等待直到转换完成 */
          
          
    if (CLK_CMSR != 0xB4)        检测是不是配置的时钟源
               while(1);
/*以上是配置时钟源  只是单单的选择时钟源
 
CLK_CSSR |= 0x01; 这句才是本历程的关键 使能时钟安全机制  因为它检测的只是外部时钟  所以才有上面配置时钟源的程序,因为默认情况下是HSI/8
注:MCU 一但使用了辅助时钟源 即使外部时钟正常也切换不回去了  直到下一次复位。
}
结合程序看下图
 


 
3.LED---tim
Stm8拥有6个定时器 其中
       Tim1 16高级定时器
       Tim 2 3 5  16位通用定时器
       Tim 4 6    8位基本定时器
本程序用的是tim4 8位的
void TIM_Init(void)
{
    /* TIM4 Peripheral Configuration */
    /* Time Base configuration */
    TIM4_PSCR = 0x04;              /* 分频值 =16. */
    TIM4_ARR  = 0xFF;              /* 重载入值 */
 
    /*TIM4 counter enable */
    TIM4_CR1 |= 0x01;              /* 开启tim4 */
    TIM4_IER |= 0x01;              /*开启计数更新中断. */
 
}
Tim4 功能较少 配置相对简单
  主要功能:8位向上计数自动重装
            3位可编程预分频
            中断 计数中断
Tim6还有输入信号同步和检测中断 功能。
 


 
<
回复

使用道具 举报

91

主题

4603

回帖

4

蝴蝶豆

论坛元老

最后登录
2020-12-8
发表于 2017-6-29 15:42:58 | 显示全部楼层
为啥图片打不开
回复 支持 反对

使用道具 举报

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
st-img 微信公众号
st-img 手机版