完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>
|
|
相关推荐
2个回答
|
|
##就是用各种定时器来达到控制RGB的一个自己写的例子。如果野火开发板就可以直接用。
** ##如下是初始化代码比较重要的 #include “Gen_Tim2345.h” #include “ stm32f10x.h” 静态无效 Nvic_Configuration(void){ NVIC_InitTypeDef nvicinit_T2; NVIC_InitTypeDef nvicinit_T3; NVIC_InitTypeDef nvicinit_T4; NVIC_PriorityGroupConfig( NVIC_PriorityGroup_1); //这里用来组1:表示1 bit抢占优先级、3bit表示此优先级, nvicinit_T2.NVIC_IRQChannel=Gen_Tim2_Source; //配置中断源time2 nvicinit_T3.NVIC_IRQChannel=Gen_Tim3_Source; //配置中断源time3 nvicinit_T4.NVIC_IRQChannel=Gen_Tim4_Source; //配置中断源time4 nvicinit_T2.NVIC_IRQChannelPreemptionPriority=1; nvicinit_T2.NVIC_IRQChannelSubPriority=7; nvicinit_T2.NVIC_IRQChannelCmd=ENABLE; nvicinit_T3.NVIC_IRQChannelPreemptionPriority=1; nvicinit_T3.NVIC_IRQChannelSubPriority=7; nvicinit_T3.NVIC_IRQChannelCmd=ENABLE; nvicinit_T4.NVIC_IRQChannelPreemptionPriority=1; nvicinit_T4.NVIC_IRQChannelSubPriority=7; nvicinit_T4.NVIC_IRQChannelCmd=ENABLE; NVIC_Init(&nvicinit_T2); NVIC_Init(&nvicinit_T3); NVIC_Init(&nvicinit_T4); } static void Gen_Tim2_con(void){ TIM_TimeBaseInitTypeDef Tim; // 除了6,7不能用这个初始化。 RCC_APB1PeriphClockCmd(Gen_Tim2_Clock,ENABLE); Tim.TIM_ClockDivision=TIM_CKD_DIV1; //时钟分频 标识符Tim.TIM_CounterMode=TIM_CounterMode_Up; //向上 Tim.TIM_RepetitionCounter=0; //这个只有TIM1 TIM8才有 Tim.TIM_Period=999; //元件值 Tim.TIM_Prescaler=71; //设置时间72/(71+1) = 1M= 1000 000 TIM_TimeBaseInit(T2,&Tim); TIM_ClearFlag(T2,TIM_IT_Update); //先 清除标志TIM_ITConfig(T2, TIM_IT_Update,ENABLE); //再使能中断 。TIM_Cmd(T2,ENABLE);//使能启动 } static void Gen_Tim3_con(void){ TIM_TimeBaseInitTypeDef Tim; // 除了6,7不能用这个初始化。 RCC_APB1PeriphClockCmd(Gen_Tim3_Clock,ENABLE); Tim.TIM_ClockDivision=TIM_CKD_DIV1; //时钟分频 标识符Tim.TIM_CounterMode=TIM_CounterMode_Up; //向上 Tim.TIM_RepetitionCounter=0; //这个只有TIM1 TIM8才有 Tim.TIM_Period=999; //元件值 Tim.TIM_Prescaler=71; //设置时间72/(71+1) = 1M= 1000 000 TIM_TimeBaseInit(T3,&Tim); TIM_ClearFlag(T3,TIM_IT_Update); //先 清除标志TIM_ITConfig(T3, TIM_IT_Update,ENABLE); //再使能中断 。TIM_Cmd(T3,ENABLE);//使能启动 } static void Gen_Tim4_con(void){ TIM_TimeBaseInitTypeDef Tim; // 除了6,7不能用这个初始化。 RCC_APB1PeriphClockCmd(Gen_Tim4_Clock,ENABLE); Tim.TIM_ClockDivision=TIM_CKD_DIV1; //时钟分频 标识符Tim.TIM_CounterMode=TIM_CounterMode_Up; //向上 Tim.TIM_RepetitionCounter=0; //这个只有TIM1 TIM8 只有 Tim.TIM_Period=999; //元件值 Tim.TIM_Prescaler=71; //设置时间72/(71+1) = 1M= 1000 000 TIM_TimeBaseInit(T4,&Tim); TIM_ClearFlag(T4,TIM_IT_Update); //先 清除标志TIM_ITConfig(T4, TIM_IT_Update,ENABLE); //再使能中断 。TIM_Cmd(T4,ENABLE);//使能启动 } void Gen_Tim_Con(void){ Nvic_Configuration(); Gen_Tim2_con(); Gen_Tim3_con(); Gen_Tim4_con(); } 如下是it.c /** @file 项目/STM32F10x_StdPeriph_Template/stm32f10x_it.c @author MCD 应用团队 @版本 V3.5.0 @日期 2011 年 4 月 8 日 @brief 主中断服务程序。 该文件为所有异常处理程序和 外设中断服务程序。 @注意力 仅用于指导的当前固件旨在为客户提供 与他们的产品有关的编码信息,以便他们保存 时间。因此,意法半导体不对任何 与发生的任何索赔相关的直接、间接或后果性损害 从此类固件的内容和/或客户的使用 此处包含与其产品相关的编码信息。 © COPYRIGHT 2011 STMicroelectronics */ /* 包括 --------------------------------------------- ---------------------*/ #include “stm32f10x_it.h” #include “bsp.h” #include “Gen_Tim2345.h” extern uint64_t TIME_R; 外部 uint64_t TIME_G; 外部 uint64_t TIME_B; /** @addtogroup STM32F10x_StdPeriph_Template @{ */ /* 私有 typedef ---------------------------------------------- ------------- / /私有定义--------------------------------- --------------------------- / /私人宏------------------- ------------------------------------------ / /私有变量---- -------------------------------------------------- --- / /私有函数原型------------------------------------------ ----- / /私有函数----------------------------------------- ----------------*/ /************************************ ************ / / Cortex- M3 处理器异常处理程序/ / ********* ********************************/ /** @brief 此函数处理 NMI 异常。 @param 无 @retval 无 */ void NMI_Handler(void) { } /** @brief 此函数处理硬故障异常。 @param 无 @retval None / void HardFault_Handler(void) { /发生硬故障异常时进入无限循环 */ while (1) { } } /** @brief 此函数处理内存管理异常。 @param 无 @retval None / void MemManage_Handler (void) { /当内存管理异常发生时进入无限循环 */ while (1) { } } /** @brief 此函数处理总线故障异常。 @param 无 @retval None / void BusFault_Handler (void) { /发生总线故障异常时进入无限循环 */ while (1) { } } /** @brief 此函数处理使用错误异常。 @param 无 @retval None / void UsageFault_Handler(void) { /发生使用错误异常时进入无限循环 */ while (1) { } } /** @brief 此函数处理 SVCall 异常。 @param 无 @retval 无 */ void SVC_Handler(void) { } /** @brief 此函数处理调试监视器异常。 @param 无 @retval 无 */ void DebugMon_Handler(void) { } /** @brief 此函数处理 PendSVC 异常。 @param 无 @retval 无 */ void PendSV_Handler(void) { } /** @brief 此函数处理 SysTick 处理程序。 @param 无 @retval None */ void SysTick_Handler(void) { } void Gen_Tim2_FUCTION(void) { //RED if (TIM_GetITStatus(TIM2,TIM_IT_Update))//中断标志位不等于复位。 { TIME_R++; TIM_ClearITPendingBit(TIM2,TIM_IT_Update);//清除中断 } } void Gen_Tim3_FUCTION(void) { //GREEN if (TIM_GetITStatus(TIM3,TIM_IT_Update))//中断标志位不等于复位。 { TIME_G++; TIM_ClearITPendingBit(TIM3,TIM_IT_Update);//清除中断 } } void Gen_Tim4_FUCTION(void) { //BLUE if (TIM_GetITStatus(TIM4,TIM_IT_Update))//中断标志位不等于复位。 { TIME_B++; TIM_ClearITPendingBit(TIM4,TIM_IT_Update);//清除中断 } } /************************************ ************ / / STM32F10x外围设备中断处理程序/ /添加这里是所用外设 (PPP) 的中断处理程序,用于/ /可用外设的中断处理程序的名称,请参阅启动/ /文件(startup_stm32f10x_xx.s)。/ / ********* ********************************/ /** @brief 此函数处理 PPP 中断请求。 @param 无 @retval None */ / void PPP_IRQHandler(void) { } / /** @} */ /******************* © COPYRIGHT 2011 STMicroelectronics * END OF FILE /事实上是 因为任务要求需要 三个监护人控制三个颜色的灯所以没用定时器写。当然重要的一个定时器控制也写了如下 也贴出自己认为比较的。 哦对了,自己想要仿真1s需要F=8mhz。亲自测试了很多就比较准72mhz都0那他也简单只要你在哪个魔法棒-》目标-》xtal-》8mhz就好了。 |
|
|
|
/**
****************************************************************************** * @file Project/STM32F10x_StdPeriph_Template/stm32f10x_it.c * @author MCD Application Team * @version V3.5.0 * @date 08-April-2011 * @brief Main Interrupt Service Routines. * This file provides template for all exceptions handler and * peripherals interrupt service routine. ****************************************************************************** * @attention * * THE PRESENT FIRMWARE WHICH IS FOR GUIDANCE ONLY AIMS AT PROVIDING CUSTOMERS * WITH CODING INFORMATION REGARDING THEIR PRODUCTS IN ORDER FOR THEM TO SAVE * TIME. AS A RESULT, STMICROELECTRONICS SHALL NOT BE HELD LIABLE FOR ANY * DIRECT, INDIRECT OR CONSEQUENTIAL DAMAGES WITH RESPECT TO ANY CLAIMS ARISING * FROM THE CONTENT OF SUCH FIRMWARE AND/OR THE USE MADE BY CUSTOMERS OF THE * CODING INFORMATION CONTAINED HEREIN IN CONNECTION WITH THEIR PRODUCTS. * * 《h2》《center》© COPYRIGHT 2011 STMicroelectronics《/center》《/h2》 ****************************************************************************** */ /* Includes ------------------------------------------------------------------*/ #include “stm32f10x_it.h” #include “bsp.h” #include “Gen_Tim2345.h” extern uint64_t TIME_R; extern uint64_t TIME_G; extern uint64_t TIME_B; /** @addtogroup STM32F10x_StdPeriph_Template * @{ */ /* Private typedef -----------------------------------------------------------*/ /* Private define ------------------------------------------------------------*/ /* Private macro -------------------------------------------------------------*/ /* Private variables ---------------------------------------------------------*/ /* Private function prototypes -----------------------------------------------*/ /* Private functions ---------------------------------------------------------*/ /******************************************************************************/ /* Cortex-M3 Processor Exceptions Handlers */ /******************************************************************************/ /** * @brief This function handles NMI exception. * @param None * @retval None */ void NMI_Handler(void) { } /** * @brief This function handles Hard Fault exception. * @param None * @retval None */ void HardFault_Handler(void) { /* Go to infinite loop when Hard Fault exception occurs */ while (1) { } } /** * @brief This function handles Memory Manage exception. * @param None * @retval None */ void MemManage_Handler(void) { /* Go to infinite loop when Memory Manage exception occurs */ while (1) { } } /** * @brief This function handles Bus Fault exception. * @param None * @retval None */ void BusFault_Handler(void) { /* Go to infinite loop when Bus Fault exception occurs */ while (1) { } } /** * @brief This function handles Usage Fault exception. * @param None * @retval None */ void UsageFault_Handler(void) { /* Go to infinite loop when Usage Fault exception occurs */ while (1) { } } /** * @brief This function handles SVCall exception. * @param None * @retval None */ void SVC_Handler(void) { } /** * @brief This function handles Debug Monitor exception. * @param None * @retval None */ void DebugMon_Handler(void) { } /** * @brief This function handles PendSVC exception. * @param None * @retval None */ void PendSV_Handler(void) { } /** * @brief This function handles SysTick Handler. * @param None * @retval None */ void SysTick_Handler(void) { } void Gen_Tim_FUCTION(void) { if (TIM_GetITStatus(TIM4,TIM_IT_Update))//中断标志位不等于复位。 { TIME_R++; //调用一下全局的变量并且在此文件生命外部变量 TIME_G++; TIME_B++; TIM_ClearITPendingBit(TIM4,TIM_IT_Update);//清除中断 } } /******************************************************************************/ /* STM32F10x Peripherals Interrupt Handlers */ /* Add here the Interrupt Handler for the used peripheral(s) (PPP), for the */ /* available peripheral interrupt handler‘s name please refer to the startup */ /* file (startup_stm32f10x_xx.s)。 */ /******************************************************************************/ /** * @brief This function handles PPP interrupt request. * @param None * @retval None */ /*void PPP_IRQHandler(void) { }*/ /** * @} */ /******************* (C) COPYRIGHT 2011 STMicroelectronics *****END OF FILE****/ 这就是精简版的中断编写啦 ***其他的一些定义你们自己看着定义就行*** 哈哈 虽然感觉还可以优化 |
|
|
|
只有小组成员才能发言,加入小组>>
调试STM32H750的FMC总线读写PSRAM遇到的问题求解?
1174 浏览1 评论
X-NUCLEO-IHM08M1板文档中输出电流为15Arms,15Arms是怎么得出来的呢?
1198 浏览1 评论
609 浏览2 评论
STM32F030F4 HSI时钟温度测试过不去是怎么回事?
456 浏览2 评论
ST25R3916能否对ISO15693的标签芯片进行分区域写密码?
1112 浏览2 评论
1658浏览9评论
STM32仿真器是选择ST-LINK还是选择J-LINK?各有什么优势啊?
321浏览4评论
STM32F0_TIM2输出pwm2后OLED变暗或者系统重启是怎么回事?
320浏览3评论
315浏览3评论
stm32cubemx生成mdk-arm v4项目文件无法打开是什么原因导致的?
288浏览3评论
小黑屋|手机版|Archiver|德赢Vwin官网(湘ICP备2023018690号)
GMT+8, 2024-8-29 11:33, Processed in 0.894829 second(s), Total 79, Slave 63 queries .
Powered by德赢Vwin官网 网
© 2015bbs.elecfans.com
关注我们的微信
下载发烧友APP
德赢Vwin官网 观察
版权所有 © 湖南华秋数字科技有限公司
德赢Vwin官网 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号