#include "stm32f10x.h"
/* RCC时钟配置 */
void RCC_config()
{
ErrorStatus HSEStartUpStatus;
/* RCC寄存器设置为默认配置 */
RCC_DeInit();
/* 打开外部高速时钟 */
RCC_HSEConfig(RCC_HSE_ON);
/* 等待外部高速时钟稳定 */
HSEStartUpStatus = RCC_WaitForHSEStartUp();
if(HSEStartUpStatus == SUCCESS)
{
/* 设置HCLK = SYSCLK */
RCC_HCLKConfig(RCC_SYSCLK_Div1);
/* 设置PCLK2 = HCLK */
RCC_PCLK2Config(RCC_HCLK_Div1);
/* 设置PCLK1 = HCLK / 2 */
RCC_PCLK1Config(RCC_HCLK_Div2);
// /* 设置FLASH代码延时 */
// FLASH_SetLatency(FLASH_Latency_2);
// /* 使能预取址缓存 */
// FLASH_PrefetchBufferCmd(FLASH_PrefetchBuffer_Enable);
/* 设置PLL时钟源为HSE倍频9 72MHz */
RCC_PLLConfig(RCC_PLLSource_HSE_Div1, RCC_PLLMul_9);
/* 使能PLL */
RCC_PLLCmd(ENABLE);
/* 等待PLL稳定 */
while(RCC_GetFlagStatus(RCC_FLAG_PLLRDY) == RESET);
/* 设置PLL为系统时钟源 */
RCC_SYSCLKConfig(RCC_SYSCLKSource_PLLCLK);
/* 等待系统时钟源切换到PLL */
while(RCC_GetSYSCLKSource() != 0x08);
}
}
/* GPIO配置 */
void GPIO_config()
{
GPIO_InitTypeDef GPIO_InitStructure;
/* 使能GPIOC时钟 */
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC, ENABLE);
/* 将GPIOC时钟设置为默认参数 */
GPIO_DeInit(GPIOC);
/* 推挽输出 */
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
/* 第13引脚 */
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_13;
/* 输出频率50MHz */
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
/* 初始化GPIOC_13 */
GPIO_Init(GPIOC, &GPIO_InitStructure);
}
/* 定时器配置 */
void TIMER_config()
{
TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure;
/* 允许TIM2的时钟 */
RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM2, ENABLE);
/* 将定时器2寄存器设为初始值 */
TIM_DeInit(TIM2);
/* 设置定时器2由内部时钟 */
TIM_InternalClockConfig(TIM2);
/* 预分频值 */
TIM_TimeBaseStructure.TIM_Prescaler = 36000 - 1;
/* 时钟分割 */
TIM_TimeBaseStructure.TIM_ClockDivision = TIM_CKD_DIV1;
/* 向上计数 */
TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up;
/* 自动重载值 */
TIM_TimeBaseStructure.TIM_Period = 2000 - 1;
/* 初始化定时器2 */
TIM_TimeBaseInit(TIM2, &TIM_TimeBaseStructure);
/* 清除溢出中断标志 */
TIM_ClearFlag(TIM2, TIM_FLAG_Update);
/* 禁止ARR预装载缓冲器 */
TIM_ARRPreloadConfig(TIM2, DISABLE);
/* 开启TIM2的中断 */
TIM_ITConfig(TIM2, TIM_IT_Update, ENABLE);
/* 开启定时器2 */
TIM_Cmd(TIM2, ENABLE);
}
/* 中断配置 */
void NVIC_config()
{
NVIC_InitTypeDef NVIC_InitStructure;
/* 选择中断分组1 */
NVIC_PriorityGroupConfig(NVIC_PriorityGroup_1);
/* 选择TIM2的中断通道 */
NVIC_InitStructure.NVIC_IRQChannel = TIM2_IRQn;
/* 抢占式中断优先级设置为0 */
NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0;
/* 响应式中断优先级设置为0 */
NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0;
/* 使能中断 */
NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
/* 中断初始化 */
NVIC_Init(&NVIC_InitStructure);
}
/* 毫秒延时 */
void delay_ms(uint16_t time)
{
uint16_t i = 0;
while(time--)
{
i = 12000;
while(i--);
}
}
/* 定时器2中断向量 */
void TIM2_IRQHandler(void)
{
static uint8_t value = 0;
/* 定时器2溢出标志位 */
if(TIM_GetITStatus(TIM2, TIM_IT_Update) != RESET)
{
/* 定时器2清除溢出标志位 */
TIM_ClearITPendingBit(TIM2 , TIM_FLAG_Update);
if(value == 0)
{
GPIO_SetBits(GPIOC, GPIO_Pin_13);
value = 1;
}
else
{
GPIO_ResetBits(GPIOC, GPIO_Pin_13);
value = 0;
}
}
}
int main()
{
/* 时钟配置 */
RCC_config();
/* 中断配置*/
NVIC_config();
/* 定时器2配置 */
TIMER_config();
/* GPIO配置 */
GPIO_config();
while(1)
{
delay_ms(1000);
}
}
上一篇:STM32的计数器的使用
下一篇:STM32F4制作一个计算器(一) 大数运算
推荐阅读
史海拾趣
在2000年代初,C-MEDIA以其在音频处理领域的专业技术而知名。然而,随着市场竞争的加剧和技术的快速发展,公司意识到需要调整战略以适应市场变化。于是,C-MEDIA在与瑞昱(Realtek)达成收购协议后,决定将AC97、HD Audio板载音频芯片技术转让给Realtek,并退出板载声卡领域。这一决策使得C-MEDIA能够专注于中高端音频处理芯片的研发,进一步巩固了其在独立声卡市场的地位。
在国内市场取得一定成绩后,B&B公司开始将目光投向国际市场。通过参加国际电子展会、建立海外销售网络等方式,公司逐渐打开了国际市场的大门。其产品以高品质和可靠性赢得了海外客户的信赖,为公司的进一步发展奠定了坚实的基础。
随着技术的不断成熟,Diode Laser Concepts公司开始将产品推向市场。公司凭借其卓越的性能和稳定性,在电子制造、半导体加工等领域迅速获得了客户的认可。同时,公司不断投入研发,推出了一系列创新的二极管激光产品,如超短脉冲激光器和高精度定位系统等,进一步巩固了市场地位。
随着全球环保意识的不断提高,电子行业的环保要求也日益严格。Deutsch公司积极响应环保号召,将环保和可持续发展作为公司的重要战略之一。公司投入大量资源研发环保型产品和技术,减少生产过程中的能源消耗和污染排放。同时,公司还积极参与环保公益活动,推动整个行业的绿色发展。这些努力不仅提升了公司的社会形象,也为公司的可持续发展奠定了坚实基础。
型号 器件名称 厂牌 备注CD4000 双3输入端或非门+单非门 TICD4001 四2输入端或非门 HIT/NSC/TI/GOL CD4002 双4输入端或非门 NSC CD4006 18位串入/串出移位寄存器 NSC CD4007 双互补对加反相器 NSCCD4008 4位超前进位全加器 NSC  ...… 查看全部问答∨ |
|
最近,拉上一个工程项目,因为项目较大,而且利润明眼人就知道客观.就近的安防行业商都出尽了自家的看家本领.大拿这个项目,我已经基本上口头上签了多项项目合作.但我知道我的劣势比其他人大很多,也很明显.这个时候,应该出点什么招?… 查看全部问答∨ |
|
如题,我这几天在研究三星的一款手机,GT-I8320,国外是沃达丰定制的H1,不知各位大侠对这款手机的cpu及硬件构架有没有研究?有的话能不能介绍下啊,因为官方给的硬件参数里没有cpu这块儿,所以请高手看看有没有相关资料? 我把拆机后的那些芯片上 ...… 查看全部问答∨ |
|
Socket OnRecvive事件函数中对窗体上TextBox设置输入焦点不成功 大虾们,帮帮忙 有一个自己封装的TCPSocket类,其中定义了一个接收数据的事件. 现在在一个窗体中处理这个事件,在这个事件函数中,对窗体上的一个TextBox设置输入焦点:TextBox.Focus();但是运行过这段代码后,并没有将输入焦点设到这个TextBox上. 请 ...… 查看全部问答∨ |
|
怎样把blatform builder 编译出来的nk.bin 转为.img文件 这样能把它烧写到瘦客户机子上 怎样把blatform builder 编译出来的nk.bin 转为.img文件 这样能把它烧写到瘦客户机子上… 查看全部问答∨ |
我正在WINCE下写一PING程序,原以用ICMPCreateFile(),ICMPSendEcho()实现。 但根据项目最新要求,需要程序可对发送PING命令的网卡进行绑定,现打算建立SOCK_RAW套接字,但是上网查找资料,发现在WINCE下必须用 WSCInstallProvider()进行声明。 ...… 查看全部问答∨ |