DMA 原理从 0 到 1:为什么它能解放 CPU?一文讲透 DMA 的工作流程
基于STM32F303双电机FOC驱动: 无感原理图/BOM表/代码等开源...
stm32cube_pwm配置
stm32f334驱动1.69寸SPI LED屏
stm32f334c8t6实现一个简单的温度湿度检测器
stm32f334温度湿度显示器开发板
stm32f334_硬件IIC跑u8g2移植步骤
详解STM32单片机的堆栈
stm32f334_第二十三章基础定时器6/7非中断方式单次触发
stm32f334_IIC通信点亮0.96OLED
微信公众号
手机版
#define uint unsigned int
#define uchar unsigned char
7 c( g) ~9 C2 m& Z4 M
& h' z4 G+ d+ H2 X& r9 V3 W
- t/ V2 o% j& O, c
uint i,j,k;
uchar h=0;8 f3 I1 J5 H9 v2 S5 T) p+ ?
void NVIC_Configuration ();
void GPIO_Configuration ();) w5 L4 ]. Q0 g0 m8 m! W# r: |
int main(): S8 U+ L0 |( Z7 f! A& e
{
& Y! \ o' k" {: R) s
GPIO_Configuration ();: [# I3 g- @! v) D7 X3 s8 \2 D
NVIC_Configuration ();
GPIO_SetBits(GPIOA, GPIO_Pin_5);
while(1)
{
: C9 M7 r( U& E4 }3 X
}
}
" S8 S( K+ i' \9 A
void NVIC_Configuration (void)1 x& q2 p* D8 z" O+ n8 ` o
{
NVIC_InitTypeDef NVIC_Initstructure;( L% H* a* b# K- u+ Z" U
NVIC_PriorityGroupConfig(NVIC_PriorityGroup_1);, @1 E& T0 ~1 I4 d* `! }& J
NVIC_Initstructure.NVIC_IRQChannel=EXTI15_10_IRQn;# L. s, y/ q6 ~ w
NVIC_Initstructure.NVIC_IRQChannelPreemptionPriority=0;4 W+ J& W, |' k. C
NVIC_Initstructure.NVIC_IRQChannelSubPriority=0;
NVIC_Initstructure.NVIC_IRQChannelCmd=ENABLE;
NVIC_Init(&NVIC_Initstructure);
}
void GPIO_Configuration (void)
{- x% v' d: C" j1 G+ g* |
GPIO_InitTypeDef GPIO_InitStructure;
EXTI_InitTypeDef EXTI_InitStructure;
RCC_AHBPeriphClockCmd(RCC_AHBPeriph_GPIOA|RCC_AHBPeriph_GPIOC, ENABLE);& R& k& o, F S, |' L
* S( x) T3 ~- d' _
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_13;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN;
//GPIO_InitStructure.GPIO_Speed = GPIO_Speed_2MHz;& R& r( [; y3 Q/ l' E, I3 J2 V0 e
//GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;: Z# I: i+ g- f3 L/ u; M# d) r
GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_UP;( a* [0 ~6 w* x' |- Z
GPIO_Init(GPIOC,&GPIO_InitStructure);8 x; b! \. g; w5 A! l
//GPIO_PinAFConfig(GPIOC, GPIO_PinSource13, GPIO_AF);
" U# G( f ?& u. _! f# q& J- G
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_5;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_OUT;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_10MHz;+ g0 m9 W. _- ]8 z
GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;5 x; Q; g& n0 y8 b8 i9 _- B& y3 ^
//GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_UP;* D3 h' m6 e2 @/ b0 r
GPIO_Init(GPIOA,&GPIO_InitStructure);
( U5 j6 v2 k5 k4 R0 a) Q
RCC_APB2PeriphClockCmd(RCC_APB2Periph_SYSCFG, ENABLE);
SYSCFG_EXTILineConfig(EXTI_PortSourceGPIOC, EXTI_PinSource13);' W) Y7 G2 i: U: S7 M& C: P
EXTI_InitStructure.EXTI_Line = EXTI_Line13;& D) q, Z( E9 ?- v$ p. V5 x
EXTI_InitStructure.EXTI_Mode = EXTI_Mode_Interrupt;
EXTI_InitStructure.EXTI_Trigger = EXTI_Trigger_Falling;9 q) T* X; k* [8 r- ]9 T) H+ I
EXTI_InitStructure.EXTI_LineCmd = ENABLE;% e1 F) K# s1 m0 Z
EXTI_Init(&EXTI_InitStructure);1 e$ A, ?1 ^% V' M9 r- ~' j
5 K2 J+ k8 }6 S& H; M% M
}
下面是中断服务函数 放在it.c中
void EXTI15_10_IRQHandler(void)
{
if(EXTI_GetITStatus(EXTI_Line13)==1)& @5 W+ U1 k5 H- \
{
GPIO_WriteBit(GPIOA,GPIO_Pin_5,(BitAction)((1-GPIO_ReadOutputDataBit(GPIOA,GPIO_Pin_5))));4 l! G& g3 s6 |" u5 ^& J4 P/ T8 F' \
EXTI_ClearFlag(EXTI_Line13);' `& ^! ~1 z7 i, s% Q, m
}) m9 m4 u4 ?( i6 X& @% z( D
}2 v9 D6 s' k# c4 ] F
7 s! }0 |; {) d
keil+cubeMX,也可以只用keil,当然也可以IAR如果你习惯的话