STM32F4 Timer External Clock TI2 Both Edges Demo
#define CLK_FREQ ( 10000 )
#define CORE_FREQ ( 168000000 ) static void TIM_GPIO_Config( void )
{
GPIO_InitTypeDef GPIO_InitStructure; // Enable GPIOA clock
__HAL_RCC_GPIOA_CLK_ENABLE( ); // Configure PA8 pin as CLK output -- to CK Input
GPIO_InitStructure.Mode = GPIO_MODE_AF_PP;
GPIO_InitStructure.Pull = GPIO_NOPULL;
GPIO_InitStructure.Pin = GPIO_PIN_8;
GPIO_InitStructure.Speed = GPIO_SPEED_HIGH;
GPIO_InitStructure.Alternate = GPIO_AF1_TIM1; HAL_GPIO_Init( GPIOA, &GPIO_InitStructure ); // Enable GPIOC clock
__HAL_RCC_GPIOC_CLK_ENABLE( ); // Configure PC7 pin as CK input -- from CLK Output
// Can not uses GPIO_MODE_INPUT : AF = 0
GPIO_InitStructure.Mode = GPIO_MODE_AF_PP; // AF = 3
GPIO_InitStructure.Pull = GPIO_NOPULL;
GPIO_InitStructure.Pin = GPIO_PIN_7;
GPIO_InitStructure.Speed = GPIO_SPEED_HIGH;
GPIO_InitStructure.Alternate = GPIO_AF3_TIM8;
HAL_GPIO_Init( GPIOC, &GPIO_InitStructure ); // Configure PC6 pin as CK output -- to Oscilloscope Display
GPIO_InitStructure.Mode = GPIO_MODE_AF_PP;
GPIO_InitStructure.Pull = GPIO_NOPULL;
GPIO_InitStructure.Pin = GPIO_PIN_6;
GPIO_InitStructure.Speed = GPIO_SPEED_HIGH;
GPIO_InitStructure.Alternate = GPIO_AF3_TIM8;
HAL_GPIO_Init( GPIOC, &GPIO_InitStructure );
} TIM_HandleTypeDef TimHandle;
TIM_MasterConfigTypeDef sMasterConfig;
TIM_SlaveConfigTypeDef sSlaveConfig; TIM_OC_InitTypeDef sConfig; static void Error_Handler( void )
{
while ( )
{
}
} void TIM_CLK_Output( void )
{
__HAL_RCC_TIM1_CLK_ENABLE( )
; TimHandle.Instance = TIM1; TimHandle.Init.Period = ;
TimHandle.Init.Prescaler = CORE_FREQ / CLK_FREQ - ;
TimHandle.Init.ClockDivision = ;
TimHandle.Init.CounterMode = TIM_COUNTERMODE_UP;
if ( HAL_TIM_PWM_Init( &TimHandle ) != HAL_OK )
Error_Handler( ); sConfig.OCMode = TIM_OCMODE_PWM1;
sConfig.OCPolarity = TIM_OCPOLARITY_HIGH;
sConfig.OCFastMode = TIM_OCFAST_DISABLE;
sConfig.Pulse = ;
if ( HAL_TIM_PWM_ConfigChannel( &TimHandle, &sConfig, TIM_CHANNEL_1 ) != HAL_OK )
Error_Handler( ); if ( HAL_TIM_PWM_Start( &TimHandle, TIM_CHANNEL_1 ) != HAL_OK )
Error_Handler( );
} void TIM_CK_Input( void )
{
__HAL_RCC_TIM8_CLK_ENABLE( ); TimHandle.Instance = TIM8; TIM_IC_InitTypeDef IC_InitTypeDef;
IC_InitTypeDef.ICFilter = ;
IC_InitTypeDef.ICPolarity = TIM_ICPOLARITY_BOTHEDGE;
IC_InitTypeDef.ICPrescaler = TIM_ICPSC_DIV1;
IC_InitTypeDef.ICSelection = TIM_ICSELECTION_DIRECTTI; // TIM8_CH2 : PC7
HAL_TIM_IC_ConfigChannel( &TimHandle, &IC_InitTypeDef, TIM_CHANNEL_2 ); TIM_ClockConfigTypeDef ClockConfig;
ClockConfig.ClockFilter = ;
ClockConfig.ClockPolarity = TIM_CLOCKPOLARITY_BOTHEDGE;
ClockConfig.ClockPrescaler = TIM_CLOCKPRESCALER_DIV1;
ClockConfig.ClockSource = TIM_CLOCKSOURCE_TI2; // TIM8_CH2 : PC7
HAL_TIM_ConfigClockSource( &TimHandle, &ClockConfig ); TimHandle.Init.Period = ;
TimHandle.Init.Prescaler = ;
TimHandle.Init.ClockDivision = ;
TimHandle.Init.CounterMode = TIM_COUNTERMODE_UP;
if ( HAL_TIM_Base_Init( &TimHandle ) != HAL_OK )
Error_Handler( ); if ( HAL_TIM_Base_Start( &TimHandle ) != HAL_OK )
Error_Handler( );
} void TIM_CK_Output( void )
{
TimHandle.Instance = TIM8; sConfig.OCMode = TIM_OCMODE_PWM1;
sConfig.OCPolarity = TIM_OCPOLARITY_LOW; // Inverted CK_Input
sConfig.OCFastMode = TIM_OCFAST_DISABLE;
sConfig.Pulse = ;
if ( HAL_TIM_PWM_ConfigChannel( &TimHandle, &sConfig, TIM_CHANNEL_1 ) != HAL_OK )
Error_Handler( ); if ( HAL_TIM_PWM_Start( &TimHandle, TIM_CHANNEL_1 ) != HAL_OK )
Error_Handler( );
} void Timer_Demo( void )
{
TIM_GPIO_Config( );
TIM_CLK_Output( ); // To CK_Input 5 KHz
TIM_CK_Input( ); // From CLK_Output 5 KHz
TIM_CK_Output( ); // PWM Output 5 KHz -- Inverted CL_Output with Delay while ( )
{
}
}



STM32F4 Timer External Clock TI2 Both Edges Demo的更多相关文章
- STM32 Timer Clock sources -- External Clock Both Edge
Timers get their clock source from External pins or Internal timer sources. External External = pins ...
- STM32F4 Timer simplified block diagram
Timers TIM1 and TIM8 use 16-bit counters and are the most complex timers of all timers included in t ...
- STM32F4 Timer Internal Trigger Connection
The Timers can be cascaded to make more complex timing relationships, or longer periods. Internally ...
- (STM32F4) Timer 基本操作
Timer (計時器) 就是慢慢數時間,在timer內部有一個計數器. 而計數器會數到Register的value當數值數到設定值Timer就會發起IRQ 而程式就會轉跳到中斷向量裡頭去執行想要做的事 ...
- (STM32F4) Timer Compare mode 操作
Timer 比較模式(compare) 具體會用在哪種狀況目前還沒有這種經驗,但Compare有配置功能pin想必有應用會用到這個模式 從Function Block來看比較模式比基本Timer多了比 ...
- Software UART, Timer, PWM, External Interrupt
How can you add extra hardware UARTs to a 32bit TMS470 ARM7-based microcontroller at zero cost? Solu ...
- STM32 System and Timer Clock Configurations
STM32 System and Timer Clock Configurations I've started writing some software to drive a series of ...
- Creating Timer in Oracle D2k / Forms 6i and Displaying a Clock
Creating Timer in Oracle D2k / Forms 6i and Displaying a Clock This is about timer in D2k An externa ...
- (STM32F4) Real-time Clock
老實說Real-time Clok這項功能,我也只有在PC和手機上有見過,其他的應用產品上我也很少見到. 言歸正傳在STM32F4 RTC這項功能在IC內部就有內建,在早期的8051是如果要做RCT是 ...
随机推荐
- MAC Book 共享网络连接
CHENYILONG Blog MAC Book 共享网络连接 MAC Book 共享网络连接 MAC比Windows共享连接要方便很多,只需要以下两步操作: 1.打开系统偏好设置,选择共享 2.选择 ...
- [R语言]读取文件夹下所有子文件夹中的excel文件,并根据分类合并。
解决的问题:需要读取某个大文件夹下所有子文件夹中的excel文件,并汇总,汇总文件中需要包含的2部分的信息:1.该条数据来源于哪个子文件夹:2.该条数据来源于哪个excel文件.最终,按照子文件夹单独 ...
- Hibernate的批量查询
Hibernate的查询大致分为以下三种场景, 1. HQL查询-hibernate Query Language(多表查询,但不复杂时使用) 2. Criteria查询(单表条件查询) 3. ...
- 315道Python面试题答案
目录 Python基础篇 1:为什么学习Python 2:通过什么途径学习Python 3:谈谈对Python和其他语言的区别 Python的优势: 4:简述解释型和编译型编程语言 5:Python的 ...
- PowerDesigner显示Common注释列并自动赋值
PowerDesigner中默认不显示Common注释列,可根据以下步骤显示并紫东填充Name列内容. 1.显示Common注释列 2.运行VB Script脚本自动赋值 使用Shift+Ctrl+X ...
- Visual Studio 2013更新内容简介
前言 VS2013终于发布了,虽然之前自己使用VS2010和VS2012的时间也不长,尤其是VS2012这自己刚刚也没用多久,看到VS2013发布了,自己忍不住也下载了下来,官网肯定可以下载,不过自己 ...
- Oracle SQL部分练习题
SQL练习题 注:查询列表不建议用 “*” 1.列出至少有一个雇员的所有部门: a. select * from dept where deptno in(select distinct ...
- Qt 数字和字符处理总结
1. 四舍五入保留小数几位 QString str="12.3456789"; double d1=str.toDouble(); qDebug()<<"d1 ...
- react-native 报错
报错信息: java.lang.RuntimeException: Unable to load script from assets 'index.android.bundle'. Make sur ...
- vue组件库(一):前期准备工作
前言 将近期项目内自行开发一个vue组件,做个总结,记录下自己的思维过程~~~ 正文 接到这个任务后,还是要做些准备工作的. 主要内容如下: 1.优化下所在团队前端开发流程 服务器搭建gitlab,采 ...