最近在使用ST公司提供的新库编写程序,
发现有地方数据类型不对应,不知是库的问题,还是没理解好,请求帮助,提前谢过!
想打算使用SysTick实现延时,新库就只剩下了SysTick_Config()一个函数,还默认设置了优先级,先根据自己的情况改一下,发现一下问题
在NVIC嵌套中断控制初始化时,如下配置
NVIC_InitStructure.NVIC_IRQChannel = SysTick_IRQn;
/* -------------------NVIC嵌套中断控制初始化------------------- */
//设置优先级组
NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);
//配置中断嵌套控制器
NVIC_InitStructure.NVIC_IRQChannel = SysTick_IRQn;
NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 2;
NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0;
NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
NVIC_Init(&NVIC_InitStructure);
但是找到结构体的定义如下
/**
* @简述 NVIC初始化结构体定义
*/
typedef struct
{
uint8_t NVIC_IRQChannel;
uint8_t NVIC_IRQChannelPreemptionPriority;
uint8_t NVIC_IRQChannelSubPriority;
FunctionalState NVIC_IRQChannelCmd;
} NVIC_InitTypeDef;
其中红色 uint8_t NVIC_IRQChannel; 为无符号8位数
而在STM32f10x中找到通道却是-1,有符号数,如下所示
typedef enum IRQn
{
/****** Cortex-M3 Processor Exceptions Numbers ***************************************************/
NonMaskableInt_IRQn = -14, /*!< 2 Non Maskable Interrupt */
MemoryManagement_IRQn = -12, /*!< 4 Cortex-M3 Memory Management Interrupt */
BusFault_IRQn = -11, /*!< 5 Cortex-M3 Bus Fault Interrupt */
UsageFault_IRQn = -10, /*!< 6 Cortex-M3 Usage Fault Interrupt */
SVCall_IRQn = -5, /*!< 11 Cortex-M3 SV Call Interrupt */
DebugMonitor_IRQn = -4, /*!< 12 Cortex-M3 Debug Monitor Interrupt */
PendSV_IRQn = -2, /*!< 14 Cortex-M3 Pend SV Interrupt */
SysTick_IRQn = -1, /*!< 15 Cortex-M3 System Tick Interrupt */
不知为什么?????
希望高手指点!!! |