在线时间0 小时
UID96138
ST金币0
蝴蝶豆0
注册时间2008-2-29
新手上路
- 最后登录
- 1970-1-1
|
a0a.1 0b0c
ST 3合一开发板stm8学习之 CSS
早就听说了ST的STM8S和STM32, 一直没有机会试试。 最近看见ST又再搞推广活动, 就从微芯力科公司的优惠购买了ST MCU的三合一开发板套件(STM32最小系统,STM8S开发板和STLINK)。并从他们的工程师处获得了一些代码和技术支持。不敢专享其美。写了些心得,与大家分享。
一 程序简介:
该工程主要涉及到gpio和rcc,tim部分,工程实现的功能是系统时钟内部和外部的切换已验证系统时钟的的安全性,当外部时钟失效时 会自动切换到内部时钟运行
时钟特征:
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*/
|
-
-
151.5 KB, 下载次数: 157, 下载积分: ST金币 -1
|